Separating different parts of a program into different processes seems (to me) to make a more elegant program than just threading everything. In what scenario would it make
In addition to the other answers, maintaining and deploying a single process is a lot simpler than having a few executables.
One would use multiple processes/executables to provide a well-defined interface/decoupling so that one part or the other can be reused or reimplemented more easily than keeping all the functionality in one process.