Et bien sûr, je trouve la réponse immédiatement après avoir posté la question. A partir de cette réponse, la solution est d'ajouter un [BsonIgnoreIfDefault]
attribut à l'ID. Dans l'exemple de la question, ce serait :
public class MongoObject
{
[BsonId(IdGenerator = typeof(StringObjectIdGenerator))]
[BsonRepresentation(BsonType.ObjectId)]
[BsonIgnoreIfDefault] // <--- this is what was missing
public string MongoID { get; set; }
public int Index { get; set; }
}