Either by making it GPL3 and have them lose access to it in their use case, have the code made proprietary so they can't use it at all, or switch to another license entirely (BSD, MIT, or public domain which are all "worse" than GPL per the GPL3 folk).
I don't understand people who would assign copyright for OSS code they wrote to someone else, because that's just a giant F U to the entire concept, and has literally no up side for anyone other than the new owner.
A CLA should specify that the copyright assigned will always be under a license approved by the FSF and OSI.
The "and" is important, as it's probably possible for one of those organizations to go off the rails, but not both.
At that point, the contributor could take the existing codebase and fork it to keep it open source. Of course, they can only do that under the existing license so they have no power to change the license themselves.
What CLAs do allow (that IMHO is beneficial) is the copyright owner developing other licensing options for specific customers. This can provide a better income source than just “support” for a project.
Sveasoft tried the same thing with WRT54G firmware back in the day, and failed so hard that apparently nobody really remembers.