Това е справедливо предложение във вашия въпрос, но по същество имате грешна концепция.
Първото от които е, че сте пропуснали концепцията, че масивите като цяло имат своите записи, започващи с индекс от 0
за първия елемент, така че вашето "позициониране" е по-малко с една единица в този случай и трябваше да бъде:
db.collection.update(
{ _id: tsId },
{$push: { 'subdoc.array': { "$each":["3", "4"], "$position": 3 } }}
)
И тъй като сега вмъквате на правилната позиция, вашите елементи са на правилното място.