They don't like GPLv3. The other BSDs used similarly old versions until they moved to clang, but netbsd is pretty tied to the gnu toolchain and aims to be as portable as possible, so they kinda have to stick to gcc
This is not the reason. We created this branch in July 2025 (GCC 12.5 was released on 11 July, 2025) and spent a year stabilizing it. A new system compiler is considered far too much of a risky, incompatible change to backport. Especially since lots of C code no longer compiles with GCC 14+ without significant changes.
Each time we upgrade the system compiler, it requires extensive work to keep all of our supported architectures in working order, and adjust our code for compatibility.
"The spec" is loose in places and is full of undefined behavior which can change from compiler to compiler. Very low level code tends to hit these types of issues much more than application code would. But these types of issues are even common in large userspace codebases.
Sure, that's one approach. Testing those changes takes time when you're working on a whole operating system and a ports tree. More time than cutting a new gcc release, as it turns out.
Because, for some reason, someone at gcc decided that some warnings shall be treated as errors. Good luck finding out which those are and which flags you need as a countermeasure. Of course it has documentation. Of course it is useless.
It is not a good explanation because that is not the reason. That reason is for Mac OS. I don't know the details, but BSDs normally modify the GCC version they use. IIRC OpenBSD used to use GCC 2.95 for years. Porting NetBSD base to compile with a newer GCC version is not as simple as a version bump. My guess is that they haven't prioritized that work yet.