There are two things happening here.
When you update the document, it is getting larger, so once the data
doesn't fit in place anymore, it will get moved. That padding factor
looks too small to be of help. It may be that tje padding factor
doesn't change enough because you are only making the tiniest of
changes per-update (pushing one more value onto the end of the array).
Also, the serialized form of BSON that documents are stored in (see
http://bsonspec.org/) means that the document has to be scanned to
find the place where the new element would go. As the document gets
larger, this takes longer. This effect is probably smaller than the
need to constantly move the document, but it might show up in the
aggregate if you were just timing a loop that does repeated pushes.
Chris