why does GAMEMODE replace GM after initialisation?

Is there any actual reason or is it just Garry being annoying?
For instance, would it break anything if I put timer.Simple(0,function() GM = GAMEMODE end) at the end of my gamemode’s main shared file?

No, it would not break anything. Sometimes I have to do it on my server, when I need to restart an specific part of my gamemode.

Isn’t GM like the ENT or SWEP table, where it is used multiple times and then cleared and GAMEMODE just holds the current GM table?

Internal gamemode workings

Right, so what I said above is correct.

So since that function will be called a frame after InitPostEntity when all gamemode loadings are done, it will have no effect what so ever?