Yes agree, both behaviors could be valid and correct depending on the use case. So there is no right or wrong. n8n behaves currently the “wrong” way for you. Sadly is supporting also the other “way” not simple as that is in the core of n8n and would so probably be a big change (and also one that could potentially cause some problems if implemented not perfectly).
You can create a Feature Request for that but honestly do not expect that to be able to be implemented anytime soon.
I have an idea and I’m brainstorming here but how about an option to pass through the data of a single Merge node input at the condition that there are no other nodes running.
I believe there there is already such a functionality when I execute other workflows - it returns data only when the final node finished executing.
For example if an append Merge node has data from a single input instead of stopping the node will pass the data forward.