Why does everyone seem to insist that there's only two options?
option A) SQUASH ALL THE THINGS
option B) HISTORY IS SACRED AND HOLY
We just make sure that the developer rebases and squashes the meandering micro-commits into parent logical units before merging. This gives us both sensible logical commits, and avoids monster commits.
I spend enough time spelunking through history that I dread seeing something like this when I need to track down the context for a particular change
I know the question is rhetorical, but the answer is that many people don't understand how to use git, and the preferred way of coping with this is to dogmatically declare some git feature (either branching/merging, or the various operations that fall under "rebasing") to be "Beast. Defiler. The source of all my pain."
But only people who are bad at git ever post things on the internet about git! (with the exception of Junio's blog)
See how annoying that is? That's what it feels like to me to read non-squashed commits.