It's not that clear cut. Sony is actually distributing the binaries, but for a lot of potential contributors the GPL doesn't force anything: they use their derived work internally, never distribute it, so don't need to share any changes. One the other hand, they will often avoid GPL'd code because of the potential for it to affect their ability to turn something into a product later. In this case, they'll either develop their own or, more likely, license a proprietary version.
Without the legal constraint, there are still reasons to push changes upstream. Maintaining a fork is expensive. Bugs get fixed and new features introduced upstream and the more you've diverged, the harder it is to pull the changes. This is why Juniper has recently been pushing a lot of things to FreeBSD - they've realised how much it was costing them for JunOS to be significantly different to a modern FreeBSD.
Even with the GPL's constraint, there are lots of ways around it. Companies ship mobile phones with Linux kernels and binary display drivers, by only using the public kernel interfaces and loading the driver late in the boot process, with most of it running in userspace. At worst, they're required to release the code for their shim that exports the hardware registers directly to userspace. For other code, you can run it in a separate process and the GPL doesn't apply.