1. The complexity breakages caused by software interactions over the years only gets worse with increased complexity. This is where the overarching theme in the piece of "Linux is getting worse" comes from. More moving parts, more interactions between parts, and more errant behavior and millions of LOCs getting chugged through a CPU give you a larger surface area for problems.
2. This is just a reiteration of the main point, but old Linux was... a PITA to work with. Xorg configurations, manually activating peripherals, no common bus interface like dbus, etc.
The problem is, again, when your foundation is built on C and you used it throughout the entire construction, you get leaks and problems come through the cracks especially at the joints and especially at points of interaction (especially between multiple versions / upgrades, which is a major point of the OP). Linux has gotten bigger to do more and be more, but as long as we keep piling on unsafe, unabstracted code as the fundamental our technical debt becomes so incredibly huge that you get to the point where you pull a Debian Stable rather than an Arch because upgrades are so terrifying.