I consider merge --squash extremely useful when I use a “branch per feature” approach. My commit history in temporary branches is a complete garbage, absolutely meaningless. And I really want to be unable to see that history anymore, not just to be able to skip it.
When the commits go to code review, it is important not to create extra commits.