It’s because the same people who wrote the code usually write the docs, and people who are really good at writing code usually aren’t good at writing docs. It’s two different skill sets that usually don’t coincide.
Case in point: my own documentation for https://nymph.io
I know it’s bad, but I don’t know how to make it good. The code, however, is pretty good. It runs my email service.
Open source projects also aren’t very good at attracting people who both want to volunteer their time writing technical documentation and can.
This is great news. Shipping X11 on a system that doesn’t need it is a big waste.