My "superstition" here has been that the former only evaluates pxls'
once, whereas the latter computes it twice. This seems like a basic
issue which must have been confirmed or debunked somewhere in my
readings, but it hasn't sunk in with me.
As I understand it, common subexpression elimination in lazy languages is difficult at best because the shared subexpressions may thereby become ineligible for fusion, so you're expected to do it explicitly by means of where/let clauses. So your superstition is actually the truth.