Subsystem jobs do work well, but you have to start and stop them (well, someone has to), you have to write a C business function that uses the correct API to add jobs to F986113 (subsystem job queue) and passes the interconnect information correctly. There are plenty of examples.
Also, before you can even try it out in development, you have to promote a dummy UBE to PD and deploy it to the enterprise server (at least that it what I found, could be wrong...). This is because the middleware that handles the subsystem API checks that the report exists against one pathcode, and that is usually PD. You get errors in the log if it doesn't find it, even if you are in development.
I've done all this quite happily, but if all you need is a job submission, go with the BSFN. Another thing you need to consider is whether you need to have easy access to each PDF created. With subsystem jobs, you can only see the last one.