This is due to the way the scheduler is implemented, which only activates the master if a non-master zone is activated. Since it currently doesn’t look into the future to see what zone would be activated, say, in the next xx seconds, it can’t start the master before the zone starts.
That said, there is a work-around to achieve the effect of this by using a dummy zone. Specifically, you can use the first non-master zone (for example, zone 1 or zone 2 depending on which one is your master zone) as a dummy zone. You can schedule the dummy zone in a program. The reason it needs to be the first non-master zone is that that’s the zone that runs the first in a program. Let’s say you want the master to open 10 seconds before any other zone starts, you just schedule the dummy zone for 10 seconds, it will start first and activate master along with it (the dummy zone itself doesn’t operate any physical valve), then it goes to the next zone (which is a physical zone). That achieve the effect of opening master 10 seconds before a zone.