Here's my understanding from here:
http://problemkaputt.de/fullsnes.htm#sn ... lregistersThe interesting thing is that you're most likely not going to get any artifacts because the envelopes go to zero regardless of ADSR and gain settings.
The SPC700 is more prone to your usual clicks and pops than usual because of a 5 sample delay between when a sample gets cut (and thus zeroed out) and when a sample starts playing again after calling KON. If you forget to turn off your KOFF and write to KON, you have 63 cycles to get rid of the KOFF for that channel.
An alternative to KOFF is to use gain to zero out the sample. When ADSR is set to use gain and the gain is set to linear decrease and its setting is maxed out at 31, you get a 64 sample fade-out (that's 2048 CPU cycles, in comparison to 8192 CPU cycles with key off).
I know SNESMod takes advantage of a 5 sample headstart after KON (that's 160 cycles) to set up volume and gain and doesn't set KOFF beforehand.
Actually, maybe you should try some other kind of magic for your NES to SNES engine. Those lovely square waveforms and triangle waves should only simply need their pitch values (and gain if you're manipulating volume) changed (unless you're emulating phase reset). When changing pulse widths, with the right kind of BRR magic, you can simply change the sample ID without keying on and off and with a small delay (mainly because the loop point has to actually trigger), you'll change the waveform without bothering with key on and off (unless your waveform was never keyed on in the first place). This works well thanks to the fact you're using chip waveforms.