One reason why I wanted to use [nqpoly4] was because I saw that it is supposed to imitate poly~ in max, and I seem to recall that one neat thing poly~ does is is to only run as many copies of your abstraction as are needed at any one moment, to save on CPU usage. Do you know if [nqpoly4] does that too?
I just took a look inside it, and it doesn't appear to do it on it's own. The normal way to save on cpu cycles when an abstraction isn't being used is to put a [switch~] in it. Send it a [0( to turn audio processing off within the abstraction and [1( to turn it on when you need it. So with [nqpoly4], you'd want to make sure that the voice turns itself when it receives a note-on message or whatever, and once it's done playing, turn itself off. (And of course, you would really want to do the same thing with your voice abstraction if you were doing it with [poly]->[route] combo, too.)
It's the same, really, with Max's [poly~]. It only switches dsp on and off for each voice if you program it to. And as I recall, in Max it's kind of a pain in the ass compared to just using [switch~].
The real advantage to using [nqpoly4] is in the patching, particularly when doing something that might need hundreds or thousands of instances, like granular synthesis. You don't have to patch all those in yourself since [nqpoly4] does it internally.