Rebasing is not that complicated, usually. (if people sending PRs make sure their code is working for each commit)
† My company's not on Github Enterprise and I don't have a repo and a second user handy to double check on public Github.
You need better tools. Even in GitHub you can click on "force pushed" and see the diff.
> there’s no guarantee they would all pass CI
There wasn't any guarantee before, either. If you want that guarantee, make the CI build every commit.
Guarantee is the wrong word. The point is that if you always squash merge after passing the entire test suite you don’t have a bunch of potential garbage commits in history that you have to wade through when bisecting.
As for building every commit that’s probably a tough sell and a poor use of money for what benefit?