If you use Alpine releases, you'll get older packages than if you use edge. In general edge packages are pretty up-to-date.
Though, they do have issues with alpine-aports patches (alpine-aports is their package repository scripts). They don't have a large enough team so a patch generally needs a few months to get in.
I think it's kind of misleading since it's only done for compatibility of the produced binaries. CentOS 5, until recently, was the actively maintained distro with the oldest kernel, libc etc. versions. So if it runs on CentOS 5, it is guaranteed to run on anything. This is different from companies still using CentOS 5 and are running active services on it because they simply refused to upgrade. Python or rather PyPi does this too. They aren't using CentOS 5 Despite of it's age, but because of it.
Is this to produce binaries on the oldest possible distro so they'll run anywhere (symbol versioning etc.)?
That being said, CentOS 5 hasn't received security updates for year or so (or 2?), so maybe there's a security risk in continuing to rely on it? I guess CentOS 6 would be the oldest still supported distro.
alpine 3.8 (and 3.7) branch have gcc-6.4 which was released in July 2017. For a C compiler, that is absolutely sufficient. You'll find many other packages in the 3.8 release branch are more up-to-date, this is a bit of an exception.
This isn't Rust. GCC-6.4 will compile literally any C or C++ project you find (that works with any recent version of GCC), including stuff requiring C++-14 and _most_ of C++-17. Hell, GCC-4.9 (from 2014) is sufficient to compile the latest linux kernel, the latest sqlite3, the latest nginx, the latest of any real significant package.
That was actually a special case if I understood correctly. gcc 6 dropped support for something needed by something else which prevented it to be upgraded
RHEL version numbers are not telling you much. Nobody would be surprised to find some Linux kernel features announced for 4.20 in RedHat kernel 2.6.32-something.
By updating the packages you need that are outdated and sending patches upstream. The package manifests are pretty straightforward and easy to work with.