Hi guys, thanks for the replies.
Pete, that's a good point about the preprocessing pipeline transforming the dead voxel nonzero. However, in my case, the dead voxels are actually zero, because they're zeroed out as a result of an MVPA analysis stream that uses full_mask to remove low-signal voxels from consideration of the classification methods. Different subjects have different low-signal voxels, which is what's creating this mess.
That being said, Gang's suggestion seems perfect, which is all the more annoying since I spent a bunch of time searching documentation. I must have missed -zskip because I was so focused on looking for a way to provide a mask (or a dataset where each sub-brick was a mask) that it didn't register.
Anyway, thanks very much to you both, great advice. Pete, I'll file your interpolation suggestion away for later, I can think of a few cases where it will be just the thing.