I found a good explanation for such a policy a number of months ago when I was researching softmodem support in Linux. Basically, when you bought a modem that had a phone line on the business end and a serial port on the other, you were paying as much for the hardware as for the firmware to implement all that fancy encoding. Once modems started moving into internal slots and then into laptop motherboards, they could dispense with the firmware and the serial interface and just have a DSP and some memory for its program. And the program is now part of the driver which they can much more easily upgrade for bug fixes and features. And it makes the hardware cheaper. Much cheaper. (And they can make the DSP simpler if the driver does some of the work in the main CPU, too.)
Unfortunately, this DSP programming is just as proprietary and expensive as it was in the hardware version. In fact, it is so valuable they will not just 'give it away'. This is why many softmodems do not have a Linux driver, unless perhaps they can provide a pre-compiled module for you.
It also explains why there are few open-source implementations: programming these things is hard work and if you're good enough to be able to do it in your spare time, you could probably get a job with someone who makes them. Or you'd probably prefer to work on a higher profile project, like a wireless card or even a graphics card.
Wade.