The fragmented Linux desktop is not really a problem IMO.
People want to customize their desktops. One way that could happen is through having some sort of grand super-flexible window manager than can do anything, and then customize their behavior in some configuration language. Another way is for interested folks to write their window managers in C or whatever language they want. The latter is usually more performant, and has less social coordination overhead, so it was the way things worked out.
I mean, we have Windows and Apple, with all the programmer-hours spent on their window managers, and they aren’t anywhere near as flexible as the open source ecosystem.