Now that there are two implementations of debugserver, one for native and the other for Rosetta [on Apple Silicon], this is needed.
This actually gets rid of some surprising interplay between --server and --out-of-tree-debugserver.
That surprising situation arises due to the fact that the Rosetta debugserver is not built as part of lldb. I.e. when we need to run tests on Apple Silicon under x86_64 emulation, we still build debugserver as arm64 (if at all).
Now, at some point, it was common practice for lldb-dotest to always set --server to path/to/native/build/debugserver: this would break testing under Rosetta emulation, because the arm64 debugserver couldn't interoperate with the emulator.
So that's why it was necessary to prevent --server and --out-of-tree-debugserver from both being in effect at the same time.
Now that I think about this a bit more, it could be a good idea to log a warning when args.out_of_tree_debugserver and args.server are both set.