That's inevitable in my opinion, because this modular interface has been used for a very long time. You should be able to replace a compiler, C/C++ preprocessor, linker and assembler without altering the entry point, i.e. the driver. Each component may have multiple versions for each supported target as well. So the driver itself has to be configured in some way, and the result is this annoying language, which has to be publicly visible for distro maintainers for example.
By the way Clang also has a similar file format [1], even though it is considerably simpler possibly because Clang is not that modular by design. (This is AFAIK intentional.)
[1] https://clang.llvm.org/docs/UsersManual.html#configuration-f...
I wonder how widely it's actually used and if making this an exposed modular interface was worth it.