The one thing that I suspect is that by growing the array it has to be moved to other blocks on disk over and over again.
Order 1 is true when the array slots are allocated ahead of time. Otherwise the same issue about moving the array to other blocks occurs. But moving blocks in RAM is not as perceptible to us human, but disk is.
I think that allocating the array ahead of time should work for MongoDB too.