In BSD-style licenses, if you make changes you can distribute them with a new license. In GPL-style licenses, the source for any modifications must be distributed along with any modified binaries. In AGPL-style licenses, the source for any modifications must be available to users, even if no binaries are ever distributed. So, in some cases, I'm sure not contributing upstream is actually illegal.
I can understand why lots of companies would use open source software but not contribute changes: if you already have your employees sign away their IP to the company, then there are legal complications to figuring out how to contribute, and if the company is publicly traded then internal modifications to open source software in order to support features that have not yet been announced may constitute an information leak if contributed upstream (and thus give illegal trading advantage to maintainers, etc). It's a big can of worms.