I didn't analyze your code in too much detail, I don't have the time at the moment. I can tell you that you are indeed concatenating your files correctly, with
false 0 startjob pop
between jobs. And you are using setpagedevice for your page-level parameters, as you should. So, rest assured you aren't crazy and you're doing things the "right way".
But take a closer look at the CompuSetDict procset. It appears to redefine most of the stuff you need, including setpagedevice, to be no-ops! So the problem may be that your setpagedevice operator has been redefined to pop your parameters off the stack!
As a debug step to see if this is the problem, comment out the
CompuSetDict begin
line. Replace each _DSC_SV with "save", _DSC_RS with "restore" and _DSC_SP with "showpage".
See how your job runs without using the CompuSetDict dictionary.
Tom