That's the type of thing I use rebase -i for though. My concern with squashing is that quite often you have multiple stable points in the development of a feature. The order that those states were reached is informative to reviewers and I wouldn't want to make a habit of squashing them away.
I think focusing on committing green test states often leads to faster development and more focused thinking, and I'd prefer to see this approach represented in the final commits rather than getting in the habit of squashing days and days of work into single mammoth commits.