State monitor is triggered when the state is changed (inclusive initial change, during preset loading). If at the time of this change condition was not met (Device: Offline) it is not triggered. It will not be automatically executed in case Device state is changed.
Sometimes it is required to send something after condition is changed OR monitored parameter/state is changed, it looks like in you case.
Then you should explicitly trigger in condition monitoring. So, in your example, in Device State monitor you can call "Reset and trigger Shift state monitor".
So, the sequence is going to be:
Loading... Device:Offline
Device monitor reset Shift monitor (but it was already armed by preset load)
Shift monitor attempt to work, but it has Device:Online condition. So, it does not work.
...
Something set Device:Online
Device monitor reset Shift monitor
Shift monitor works, since explicitly triggered and Device:Online
...
Something change Shift
Shift monitor works, since Shift is changed and Device:Online
...
Something change Device back to Offline
Shift monitor no longer works since its conditions are not satisfied.
While in your example everything is "simple" and could be implemented more transparent for you, there are situations which are more complex. And so the system trade simplicity for flexibility. I prefer something which can do anything over something which is simple but limited.
In that particular case of changing conditions for some State Monitor, I could consider check which State Monitors use which States as conditions, and on such state changes check either there WAS some change in the monitored state which has not triggered yet because of conditions and execute the monitor. As you can see, even more complicated logic...