Fand es! Ich habe GetCollection() aus einer anderen generischen Methode heraus aufgerufen, etwa so:
public T Save<T>(T item) where T : class, IRepoData, new()
{
GetCollection<T>().Save(item);
}
Dies führte dazu, dass GetCollection T als Schnittstelle anstelle der eigentlichen Instanzklasse sah. GetCollection funktioniert woanders gut.
Für alle anderen mit diesem Problem habe ich stattdessen einfach eine Low-Level-Abfrage wie diese verwendet ... Collection.FindOneAs<T>(Query.EQ("Id", itemID.ToString()));