That's the common opinion expressed in "Documentation/stable_api_nonsense.txt". Yet, some people disagree with it.
Having a driver in tree guarantees only that the driver compiles, nothing more. The responsibility for testing the driver still lies with the manufacturer, though the manufacturer has no direct control over what goes into the kernel. So, the manufacturer is forced to track which bugs are in which kernels (and which distributions), which patches have been accepted, when, why not, etc. As I mentioned elsewhere this is a full time job and not a fun one.
Having the driver in-tree actually increases the burden to the manufacturers because now they can't control what their customers are getting. Realistically they have to maintain both an in tree and out of tree version, or they just give up on Linux.
Plus, the whole idea that every single driver should be in tree is frankly dishonest. Is the kernel driver tree going to grow forever with every single device ever manufactured? What's the point? Who is going to really audit and test all these drivers for every single API change? Let's not kid ourselves, this is not happening and is not going to happen.
As a whole this centralized model is unsustainable. The maintenance of the drivers should be left to the hardware manufacturers, who have customers and financial motivation to produce quality drivers. These manufacturers shouldn't have to track every possible kernel release as long as they comply with the stable API. (Plus, of course, the drivers being GPL is incredibly useful for the quality).
The end users in turn shouldn't have to jump through hoops to get new hardware working if a driver exists.