A system that does too much is complex almost by definition, with complexity you introduce conflicts between features that need to be resolved through design, designing for multiple interactions of conflicting features is neigh impossible.
The combinatorial of interactions between many features will inevitably create unresolvable edge-cases that need to be patched over, either hidden away or by tacking on more complexity so the user can control how these edge-cases should be solved for their own workflow.
There is no way to do such design upfront, you can only upfront what you can think and reason about. That's how all projects start, and their demise is exactly from realising "oh, we don't cover this flow, maybe we should have a feature for that". Taking all these learnings and applying to a new system that has more design upfront starts to verge on Second System problem.
Linux is also full of cruft, it's good enough but I don't think you should live with the impression that is a benchmark of software quality. It's still impressive but as any complex system it has many issues from legacy.