AIUI, the nogap feature of LAME works by shuffling samples from the end of one input file to the beginning of the next (or vice versa) in order that it encodes an exact number of MP3 frames, and the reason that lame doesn't write ID3 or VBR tags is an implementation issue rather than a fundamental technical one. After all, adding headers shouldn't affect any of the audio frames at all (though I didn't verify this myself - should have kept the originals).
Remember that there are two sources of gaps: the encoder and the decoder. I'm pretty sure that I've got the encoder side sorted out, and I suspect that the hiccup occurs when the decoder is parsing the VBR header. That said, I have in the past been known to be mistaken, and I would like to hear from anyone who knows the ARM decoder and can shed more light on this.
_________________________
Toby Speight
030103016 (80GB Mk2a, blue)
030102806 (0GB Mk2a, blue)