The AP7331 is indeed momentary. My thinking for that is, I don't want the user to have to press any buttons to inject a payload. You just plug it in, D+ enables the LDO, and boom, injection. RCM stops, D+ goes low, DI shuts itself off. This greatly helped with battery life.
D+ actually has more than enough current capability to turn on the LDO.
By my calculations D+ can supply about 2mA (full speed uses 1.5k pull up at ~3v) when set as USB slave, which is more than enough to enable the LDO. It's tested and working great as you can see from my videos.
It might be because I work automation by day and have seen some pretty shady code controlling life safety equipment, but I don't really like the idea of giving the MCU control of something as important as the LDO EN pin. Any programming error or abnormal condition that causes the MCU to freeze or keep that pin high means the potential for a dead battery and a very unhappy user with a Switch stuck in RCM. I know
technically that should never happen, but I prefer to do it with passives.
Keeping the MCU on for D0 isn't really a big deal since injection shouldn't happen if it's pressed, so USB host would be a big battery drain for nothing. (11mA draw!) Instead use can just hold down the button until they get visual feedback of which payload is selected. Bootloader runs for well under a second so this shouldn't be inconvenient, and gives the user time to let go of the button if they only pressed it by mistake, instead of having to cycle back to the payload they were using (wasting even more battery).
Last advantage of using D+ is this: to get into firmware update mode, the user can hold + button (D0) and hit reset twice, and the MCU will then keep itself on with D+. Plug it in and update firmware, and once done, DI shuts itself off because no more USB slave mode.
It's all in the name of maximum battery life and minimum complexity for the user who just wants to kill some goombas.
Anyways, those are my thoughts and self-rationalizations, if I'm amiss in my thinking by all means throw some sense at me.