steps.step оценява на масив от низове в този случай ["s1", "s2"] . Редовният $lookup поддържа такова сравнение и прави $in зад сцената.
Във вашия втори пример използвате $expr така че трябва да използвате изразен език, следователно трябва да използвате $in оператор:
$expr: { $in: ['$_id', '$$stepId'] }