This has been discussed many times. The answer is that these were deliberately left out when OOPing the compiler from 1.0.x to 2.x because they had a measurable impact on speed.
That doesn't mean it couldn't/shouldn't be reevaluated though. Modern processors scale things in relative tight loops up more than other things, so bottlenecks might have changed. But afaik FPK regularly plays with these kind of things.
Actually since a recent FPC get-together I asked, about internal parallelization (threads in the compiler), for which this (global state reduction) would be important too.
But the problem was that that isn't the hard part, the problem to tackle this is in the module system, iow the toplevel bit that handles if units should be recompiled etc, and the way compiling cascades from program to unit to unit etc.
This part is said to be enormously complex with many pitfalls, and has been scheduled for a rewrite for over 15 years now. (originally pushed to "after 2.0", then to "after 2.2" etc etc)