Czy trochę kopałem, według innych komentarzy - jak mówisz, jeśli element nie istnieje, to działa, ale jeśli jest pusty - nie działa. Najwyraźniej jest to zgodne z projektem.
Jedną z sugestii było dodanie BsonIgnoreIfNull atrybut do tablic, co oznacza, że Twój AddToSet będzie wtedy działał.