Don't forget the LGPL, which, in its attempt to allow proprietary software to use LGPLed code with conditions, makes it painful to use LGPLed code in free software licensed under anything other than the GPL.
See LGPL v2.1 section 7. It's annoying to comply with. Section 6 too. 7a was clearly designed for proprietary software. It would be a problem with the GPL too if section 3 wasn't there.