Clarity. Writing functionally, non-strict really wants to be a first-class thing. It actually happens all over the place, rather than once. Not that you can't spell it all out in classes (and there's a benefit to that -
Lazy<A>
is far from free), but it does get noisy.