One downside of this approach is that it requires destructive changes
to work-in-progres branches: I might think the MR is ready, squash the
commit sequence into a single commit, but then more work is ready. Now
it’s hard to revert individual patches, or collaborate with others,
because the git history was disrupted.
Another is that the commit message itself isn’t very easily visible to
reviewers.
I couldn't parse this. What does "but then more work is ready" mean? Why is it hard to collaborate with others? Which commit message "itself isn’t very easily visible to reviewers."?
I regard squashing as a positive bonus. I take a long series of commits with messages like "bugfix" and "fix comments" and put them into one or more logical commits, each doing (so far as poss) as single thing, each with a comprehensible commit message. That makes it *easier* to collaborate, and easier to review subsequently.
(Agreed, there is a moment when I need to hold the token, but that's seldom a problem.)
TL;DR: I don't yet understand the problem you are trying to solve, still less the solution.
Simon