To uczciwa propozycja w twoim pytaniu, jednak w zasadzie masz błędną koncepcję.
Pierwszym z nich jest to, że przegapiłeś koncepcję, zgodnie z którą tablice mają swoje wpisy zaczynające się od indeksu 0
dla pierwszego elementu, więc Twoje „pozycjonowanie” wypada o jedną jednostkę w tym przypadku i powinno być:
db.collection.update(
{ _id: tsId },
{$push: { 'subdoc.array': { "$each":["3", "4"], "$position": 3 } }}
)
A ponieważ wstawiasz teraz w prawidłowej pozycji, Twoje elementy są we właściwym miejscu.