The primary benefit is the simplified code that results from having each logical part of your application run as a simple linear flow or loop, with only that state it needs, visible to it.
The second benefit is the ability to prioritise some of those logical flows over others,
Event-loop programming usually feels kind of contorted to me, too, but separate processes share both of these advantages. Better, processes make interaction between your program and the OS simpler w.r.t. I/O, signals, and scheduling than threads (which map to OS contexts in different ways on different platforms). Separate address spaces are more useful in C than in Perl, but they're still nice.