For the GCC and Clang it's a case of a newer/better compiler architecture taking over an older one. At no point in time I see the advantage of keeping several implementations around just for the sake of "diversity".
If it were just unequivocally "newer/better architecture" they wouldn't coexist side-by-side in the first place, one would have entirely replaced the other by now. Obviously, the differences between the two are much more complex than that.
One reason they are expected to coexist for some time to come is exactly that a lot of Linux (in particular) applications and libraries require gcc specifics. The fact that there are "gcc specifics" that lock those applications and libraries to gcc and can't just "upgrade to the obviously newer/better architecture" is itself an argument for "diversity". C/C++ is "supposed to be" a portable language. If developers were keeping to standards and if clang were indeed objectively better architecture, then nothing should still be using gcc, right? Diversity is one way you encourage developers to stick to portable standards (because then they can use whichever compiler is fastest/better today and switch at-will as all the implementations compete to outperform each other).