A lot of it, I think, isn’t trying to design for the lowest common denominator, but trying to find abstractions that fit problems more accurately. When that works well, you end up with much higher accessibility and fewer errors.
As with all abstractions, though, they tend to leak. Software design tries to minimize those leaks, but they have to prioritize which ones to fix.
Advanced users like you or me don’t need those abstractions nearly as much, so we’re not prioritized. Which is probably fine. We end up seeing the leaks in the abstractions a lot more because of it, though.