This is because it @barevaluates to false, and therefore &&=will evaluate the expression no further ... Unlike your second expression, which in any case assigns @bar, regardless of whether the following expression resolves. The same applies to a case ||=that evaluates a complete expression, regardless of which initial value is @fooallowed.
, , (undefined) @bar, . &&= x = x && y. x = x && y if x.