Yep that'll be it.
I actually wish it worked differently, but currently scriptnode c++ synth nodes only call process() per active voice. So if there are no voices it won't call process (or subsequently process frame).
Additionally say there are 3 voices playing, that will mean your process script gets called 3 times as frequently... Each voice will run it's own process.
You can check which voice the process() is currently running for, using polydata, which allows you to do different processing per voice