Calling GCC a "good" compiler is going a bit far, imo. LLVM has become the dominant compiler framework (and thus clang, clang++, golang, etc use it) because of corporate interests.
GCC as it's constructed is a horrible framework. The way you port GCC to a new platform (say, a weird ARM variant) is to fork it hard and mangle multiple parts of the internals, then carefully feed it back. It's a mess. Nobody should be forced to port GCC.
The reason LLVM is good is because it has a corporate back (Apple, Google, IBM, ARM, Intel, Synopsys, NVIDIA, AMD, etc: https://foundation.llvm.org/docs/sponsors/) and it has a lot of work put into it to make extensible (which GCC isn't by design) and as a result have a clean interface for usage.
On the other side of this argument, paid extensions (and paid code in general) exists because at one point or another we live in a society run on capitalism. Unfortunately, that means that money has to come from somewhere to make bread hit the table. For a lot of open source, that money comes from one of two places:
* Corporations (people doing work on open source projects under the auspices of their company)
* Donations (people saying "this open source is good enough I want to make it continue happening").
One is sustained by maintaining the tools you use. The other is sustained by grace.