-Z means you get the URLs in parallel. In parallel means the transfers are done concurrently. Of course they will be intermixed if you pass them to stdout as all the transfers will then output their data as soon as possible to the same output stream. They will even be mixed very unpredictably.
I don't think there's necessarily any reason for it to be a given as tools such as (GNU) make have strategies for dealing with how output is arranged.
I imagined curl would make some effort to ensure the output from a request is collected together rather than interspersed with the output from other requests. This would be similar to make --output-sync=target (which is the default).
Collecting line-based output from several servers at once, maybe?
This seems the most ideal. If output can be complete lines then that will make it usable in the unix shell environment. The order of output doesn't matter in my case, although if it did then curl would probably have to store everything until all requests are complete (e.g. sort).
That's a feature-request and not a bug. There might be use-cases where such a feature would come in handy, even if JSON seems to be a data format that is not line oriented and that would easily broke even in such a scenario. If someone wants to work on adding such a feature to curl I won't block it and I could assist, but I will personally not put it on my near-term TODO.