It has always been an issue that it is only propagated if the sequencer triggers the creation of the (sub)algorithm. If it was already created prior to the sequencer, it wouldn't work. Hence this entire magic propagation of properties should move out of the C++ code, and into the configuration. I just don't like from first principles that the C++ code modifies properties, as it does so after the configuration is made. So it's the equivalent of self-modifying code, which tends to be hard to understand / get right.
Instead, it is much easier on the python side to traverse the algorithms 'below' a sequencer, and set some of their properties...
The old behaviour (prior to !904 (merged)) was that the constructor of GaudiCommon was pulling the special properties out of the JobOptionsSvc. After !904 (merged)RootInTES became a normal property, so pulled from JOS at initialize (sysInitialize, actually).
The problem is that there's some too clever code in GaudiSequencer::decodeNames that: