Just to clear it up, I use subprocesses mostly like this: main process checks prerequisites, then run process steps one by one, does clean up.
Subprocesses are modular independent steps like: upload all files, read back all results, execute requests for each item in the queue, generate and send report. I have 3 scenarios that have different steps/order, so it is easier for me to build it this way, although I could probably just use pages or scheduler for the same purpose, but that would be a mess.
Only downside is that you should not pass huge collection data back and forth. Most memory efficient way in that case is just to make one huge VBO, including dragging in standart VBO actions you use.