Sim, é possível, mas você tem algumas opções.
Opção 1:C como um subdocumento
Se você realmente deseja usar subdocumentos, não precisa criar um modelo separado. Você precisa alterar sua referência ao array 'c'.
var C = new Schema({...});
var B = new Schema({c: [C]});
var A = new Schema({c: { type: ObjectId, ref: 'ModelB.c' });
var Model_A = mongoose.model('ModelA', A);
var Model_B = mongoose.model('ModelB', B);
Opção 2:C como modelo
(Eu apenas apresento isso como uma alternativa - já que seu exemplo parece redundante, pois você cria 'C' como um modelo separado, bem como um subdocumento)
Alternativamente, pode fazer sentido ter coleções separadas, você pode criar um modelo de mangusto para cada uma. Cada um será uma coleção separada:
var Model_A = mongoose.model('ModelA', A);
var Model_B = mongoose.model('ModelB', B);
var Model_C = mongoose.model('ModelC', C);
Nesse caso, você pode querer referenciar diretamente cada modelo:
var C = new Schema({...});
var B = new Schema({c: { type: ObjectId, ref: 'ModelC' }});
var A = new Schema({c: { type: ObjectId, ref: 'ModelC' });
O ponto
Sim, é possível, mas você precisa escolher se deseja C como modelo ou subdocumento.