Je to férový návrh ve vaší otázce, ale v zásadě máte špatný koncept.
První z nich je, že vám unikl koncept, že pole obecně mají své položky začínající na indexu 0
pro první prvek, takže vaše "umístění" je mimo o jednu jednotku v tomto případě a mělo by to být:
db.collection.update(
{ _id: tsId },
{$push: { 'subdoc.array': { "$each":["3", "4"], "$position": 3 } }}
)
A protože nyní vkládáte na správnou pozici, jsou vaše prvky na správném místě.