There are at least two answers to this:
1) You don't need the resulting compiler to be bitwise-identical, just the output.2) If you are paranoid you could even compile a bitwise-identical compiler from its source, by archiving the build system and/or using virtualisation to run the ancient system.
But in fact this is all irrelevant since you are comparing two completely different things - an end user generally cannot compile a commercial compiler *at all*.
A *fair* comparison would be to compare the difficulty of running a dongled binary copy of an old commercial compiler with that of running a binary copy of an old gcc compiler (on a new machine).
I have done this several times, and I find that gcc always works, and the commercial compiler will very likely not work. The copy protection always seem to rely on some tricky mechanism that breaks if everything is not exactly right (hardware, OS). Whereas running a gcc binary installation only requires very basic standardized OS support. At the end of the day, gcc is designed to work everywhere it can. Whereas many commercial compilers are *deliberately designed* to fail if copied!
No doubt you will say that the vendor can supply an old unprotected copy? All I can say is that is not my experience. With IAR my only option was upgrading to the new compiler version - when I did it would not even compile my code, let alone be "the same compiler". And this was only a couple of years later, not 18.