TResult pode ser um BsonDocument ou uma classe específica que representa o resultado do item de redução do tipo.
Eu acho que para o seu exemplo, você poderia ter uma classe genérica como esta:
public class SimpleReduceResult<T>
{
public string Id { get; set; }
public T value { get; set; }
}
E sua declaração de opções seria
var options = new MapReduceOptions<BsonDocument, SimpleReduceResult<int>>();