Haskell is the only widely used language that uses lazy evaluation by default. This has historically lead to confusion and difficulties with reasoning about time and space, particularly when a programmer is coming from a strict language.
Why do we care about laziness by default? Like purity, it adds power and expressiveness.
The series require Haskell knowledge but this summary is fairly readable if you have a good grounding on programming language theory and implementation.