One argument commonly given by manufacturers is that releasing their code, or its documentation, would cost them competitive advantage. In some cases, this complaint makes sense. In the graphics accelerator market, for example, a lot of optimizations are done in software. If a competitor could examine these improvements in detail, the original manufacturer might lose some of its edge. Since a significant amount of money is spent designing and implementing these optimizations, a company could conceivably gain an advantage by investing more in hardware design and copying the driver innovations from competitors.
This situations seem somewhat unlikely, however, because most hardware in which such things are important is sufficiently complex (and varies enough between manufacturers) that an optimization for one would have the opposite result on another.
Where this argument fails is in relation to interface specifications. Hardware interface specifications have very little by way of implementation details. They tell you which registers you have to set for a particular action, for example. The internal implementation is significantly more complicated. Consider the Pentium II and the Athlon; both execute almost the same instruction set—they have the same interface—but their implementations are wildly different.
Some graphics card manufacturers have claimed in the past that their drivers included code licensed from third parties. In this case, they wouldn’t be able to release that portion of the code. It’s worth noting that this can be a very real concern. When Sun bought StarOffice, it took a long time for Sun to perform a full audit on the code and discover which parts they now owned (and release those bits) and which parts were merely licensed. A similar process is currently underway with Solaris. It may not always be economically feasible to identify which parts of a driver could be released without legal issues. But this wouldn’t stop them from releasing the specifications.