It's "ok" along these axes, a bootstrap for gcc isn't all that straightforward either, the main difference being that if you've already done "apt install build-essential" or similar it just so happens that "it's done" - albeit entirely non-hermetically and the bounds of "it" is probably entirely unknown to the user. I had this discussion with a kernel engineer once who insisted gcc had almost no external dependencies, and he believed this for this reason.
The parts that make it only "ok" are largely cmake derived problems - yes there's sometimes incomplete docs and so on, but largely the confusing parts come from the multi-project split and cmake reconstitution. I'm particularly excited for a future when llvm-libc has made some more progress, at which point a very hermetic build will get quite a bit easier.
The thing is that if you're cross-building this is really the answer, cross building with the deeply intertwined gcc chains is an equally awful experience. I'll take a static clang tool build I can zip up and give to everyone (except nix, because they decided loader hell should only be played on max difficulty) over a fragile distro intertwined mess any day.