Ho scavato un po', secondo altri commenti - come dici tu, se l'elemento non esiste, funziona, ma se è nullo - non funziona. Apparentemente questo è di progettazione.
Un suggerimento è stato quello di aggiungere BsonIgnoreIfNull attributo agli array, il che significa che il tuo AddToSet funzionerà.