I suspect that's intended behavior. But if I'm understanding correctly, I think you could account for it with something like-
... | xargs -P10 -i sh -c 'command {} 1>{}.out 2>{}.err'
or maybe with tee:
... | xargs -P10 -i sh -c 'command {} | tee -a {}.out'