steps.step evalueert in dit geval naar een array van strings ["s1", "s2"] . De gewone $lookup ondersteunt een dergelijke vergelijking en doet $in Achter de schermen.
In je tweede voorbeeld gebruik je $expr dus je moet expressietaal gebruiken, daarom moet je $in operator:
$expr: { $in: ['$_id', '$$stepId'] }