An alternative is to reckon the percentage relative to the design capacity, so that a full charge can be less than 100%. That's what the i3 window manager's status bar shows by default, for example: https://i3wm.org/docs/i3status.html#_battery
So the extremes at top and the bottom are easy to detect, but the middle is hard.
Coulomb counters are often used to keep track of state-of-charge around the middle, but they don't keep track of battery aging, self-discharge, or some other stuff. So an occasional trip up to 100% is a useful calibration function.
If the top (100%) SoC of a cell was, say, 4.2v at the beginning of its life, then it's still 4.2v near the end. That part doesn't change as time moves on and things age.
And yeah: Cell longevity is maximized by avoiding extremes in charge state, but that's also a function of the duration it is held at that extreme. Briefly charging to 100% is a very different thing than bringing it to 100% and leaving it that way for -- say -- days, weeks, or months.
It's alright. Part of keeping the battery at 80% (or 60%, or any other figure) means knowing where 80% is. Taking a brief trip up to 100% and down towards 0% every now and then is a requirement of knowing the present capacity, and therefore where 80% lives, and isn't particularly traumatic -- even for well-aged cells. Balancing is also important for longevity and requires a trip to the top.
The rest of the time, when things are neither being calibrated nor balanced, then it can stay at no more than 80% -- yeah? Yeah.
(And sure, I hear you. You want it to be some other way, and that's fine. You're allowed to want things. I'd offer to apologize on behalf of physics but physics doesn't care about apologies.)
I'm sure there's some arithmetic where more accurately charging to 80% instead of 85% wins out over never going to 100% in terms of battery life. Not saying Apple engineers did this, but I wouldn't assume they hadn't.