The default behaviour in Reaper is for each effect to take the MIDI out of the previous effect. If an effect does not output MIDI, then the MIDI is passed through that effect unchanged.
This matches how audio input-only plugins (such as scopes etc.) behave. The audio is passed through unchanged to the next effect. Here’s a diagram:
Non-VST3 effects seem to handle this fine. For example, a VST2 plugin with “receiveVstMidiEvent” but not “sendVstMidiEvent” enabled would act like effect (3) in that diagram, where the MIDI is passed through unchanged to the next effect in the chain.
VST3 doesn’t provide a way to distinguish between effects (3) and (5) in the diagram. Before LegacyMIDICCOutEvent, all VST3 effects were handled like (3) - now that you’ve introduced it, they’re (maybe?) handled like (5) but the host has to guess, or something?
It sounds like you’re suggesting users should have to explicitly do this routing themselves (even while audio is routed automatically) - which seems like a bad user-experience specific to VST3 plugins.