Some companies just flagrantly violate the GPL, and little ever comes of it.
Others ship minimal shims in the kernel, and put the proprietary bits in userland code or some such. This seems to be more common, where vendors will technically release their kernel fork, but the code will be obfuscated or just generally useless without the proprietary blob that goes with it.
I'd much rather the kernel just have a stable ABI so these kernels could at least be freely updated instead of being stuck with the hacked together fork with its proprietary shims.