È una proposta giusta nella tua domanda, tuttavia hai sostanzialmente il concetto sbagliato.
Il primo è che hai perso il concetto che gli array in generale hanno le loro voci che iniziano con un indice di 0
per il primo elemento, quindi il tuo "posizionamento" è fuori di un'unità in questo caso e avrebbe dovuto essere:
db.collection.update(
{ _id: tsId },
{$push: { 'subdoc.array': { "$each":["3", "4"], "$position": 3 } }}
)
E poiché ora stai inserendo nella posizione corretta, i tuoi elementi sono nel posto corretto.