Currently it appears that depreciated functions from the start of UE4 are still kept in the codebase. Just picking one example from the code at random:
DEPRECATED(4.11, "Use SetCrowdSimulationState function instead.")
virtual void SetCrowdSimulation(bool bEnable);

So that function has been depreciated since 4.11 which was released 31 March, 2016. It is still being compiled today by everyone that builds the engine - both internally at Epic and everyone who works with the source.

What I'm proposing is removing depreciated functions from a certain version or older. How far back would be up to Epic. I do not propose running up to the latest version, but instead suggest removal of depreciated functions usually following a set number of release back.

This would not prevent older projects from updating to the latest version. To update an older project, either update a version at a time or to an intermediate version where depreciated functions were available in order to update the project to the newer API/usage would be migrated, before continuing to the latest version. That would add some slight friction for updating older projects, but to all current projects could benefit from the removed code if older depreciated functions were removed.

This wouldn't stop older projects from being capable of being updated, but would add some more burden on the updating process in order to reduce the compilation cost on current and future versions.