Another advantage of keeping involved and contributing back is that you get to influence the direction in which the upstream project goes (if the maintainers aren't too obstinate). And through that you make better use of the work produced by people you don't have to pay. Also, contributing a patch back lets you exploit the quality assurance provided by the project, be it explicit or implicit in the fact that your patch will be used and tested in practice by a lot of more people.
I'd say it makes business sense to contribute back to BSD projects for anything that isn't the core technology of your company. If I run a hypothetical company that makes, let's say, raytracers for CGI effects, the advantages I have by keeping fixes in a logging framework or networking library to myself are very small. Contributing back gains me more. Those things aren't what my company is supposed to be good at anyway.
If we would be using a BSD licensed raytracing library, on the other hand, then it would be a different matter. But if you are a company whose business case is developing commercial raytracers, you'd better be far ahead of what's available through BSD licensed software in terms of raytracing, or you should ask yourself if you are in the right market. And if you have that expertise and it is what you use to compete, you would keep it in-house under any circumstances.
So I'd say (smart) companies contribute back whenever it's something that's outside of their core business, and otherwise not. So GPL or not doesn't really make a difference in regard to that -- it's not going to make a company give away what they use to compete, it only makes more companies stay away from your code. Then again, if that's what someone wants, as a matter of principle, then fair enough, it's their choice and I have nothing to say against it.