It's upto hardware manufacturers to create good quality Linux drivers, or at least provide good documentation so that good drivers can be written.
Yes, closed-source drivers loaded as modules exist, but they are a PITA sometimes if you want to update your kernel.
And yes, the Linux kernel will keep changing - you can't expect them to not make improvements because closed-source driver developers want 'stable kernel interfaces'. There's Linux LTS, or you can just use an old kernel without updating if you want to. But I want to update my kernel.
IMO driver problems aren't Linux's fault