It's the creator of the software (or, more precisely, the owner of the
copyright) that gets to enforce the license, not the users. And a copyright
license isn't automatically enforced; the owner of the "rights" has to sue
the infringer. Additionally, that rights-holder can't infringe his own
copyright, so the license doesn't matter in his case.
In the case of the Linux kernel, to enforce the GPL you'd have to decide
who's going to be sued (All Linux users? All Linux developers? Only certain
developers, say, Linus?), and you'd have to find an affected copyright holder
to file the lawsuit. There are many, many contributors to the Linux kernel,
so maybe you could find one. But if you only find one or two who represent a
small portion of the code, the other kernel developers would just rewrite the
parts of the kernel based on their contributions. No big deal at all.
You're not likely to find enough contributors willing to file a lawsuit to
represent a significant part of the kernel, especially since most probably
are less interested in software freedom than the open source ideals of
pragmatism and getting as many users as possible. They simply won't be
interested in pursuing a lawsuit that might be counterproductive to their
ends.
Without someone (who owns the copyright to a large portion of the kernel) who
is willing to sue, there's really no legal mechanism to force binary firmware
out of the kernel. So the kernel gets a free pass not because of any
distinction between firmware and software, but because nobody who might have
standing to sue is interested in trying to enforce the GPL.