Its been my experience that there's a second part to the TCO argument that answers the question of why companies allow their employees, on company time, to work on and contribute OSS.
Essentially, open source provides a mechanism to share the cost of the long-term maintenance of a project. By contributing back, you can leverage the resources of the community to ensure that your new features continue to work against new and improved versions of the software, without requiring future resources to re-implement and update any changes made.