There are technical reasons for this but it also serves another purpose: maintaining leverage over companies that would take advantage. The Linux kernel receives tens of patches every hour. If companies refuse to upstream their drivers, they are left behind and must pay the maintenance costs or drop support. Their products are worse for it.
I wish every free software project had this power.