É uma proposição justa em sua pergunta, no entanto, você basicamente tem o conceito errado.
A primeira delas é que você perdeu o conceito de que arrays em geral têm suas entradas começando em um índice de
0
para o primeiro elemento, então seu "posicionamento" está fora de uma unidade neste caso e deveria ter sido:db.collection.update(
{ _id: tsId },
{$push: { 'subdoc.array': { "$each":["3", "4"], "$position": 3 } }}
)
E como agora você está inserindo na posição correta, seus elementos estão no lugar correto.