Earlier quoted context omitted.
Inevitably you will encounter (a) a junior developer who considers commits to be 'save states' rather than individual logical changes or (b) someone who is used to squash merge and did not think commit history mattered. Without squash merge, it then becomes very likely most commits do not even build making bisecting a bit of a nightmare.
That is where you teach that developer to rebase his commits into logical and self-contained units before merging the PR.
I don't think I've ever found myself in a situation where I needed more granularity than the PR level when looking back through the history of a repo.
What are the situations where this is actually useful enough to make it worth the effort?