Fiz algumas pesquisas, de acordo com alguns outros comentários - como você diz, se o elemento não existe, funciona, mas se for nulo - não funciona. Aparentemente isso é por design.
Uma sugestão foi adicionar o BsonIgnoreIfNull atributo para arrays, o que significa que seu AddToSet funcionará.