Whether one uses . or a macro (manual or recorded) should depend on the current situation. It's really not a "pick one and stick with" it kind of situation.
I agree, so many ways to do it it’s horses for courses.
Eg from the first “pick” you could press * to highlight occurrences and move to the next one use cw to change it to “s” and bounce on n to move to the next one you to squash and use . to repeat the change.
That’s visual and lets you decide which commits to squash.
If I wanted to squash all the other commits I’d probably use visual block and } instead, but that’s just me.