Hmmm...Maybe it's from the music being stopped, then started again? Although, I thought I had removed that from your script a while ago...hmmmmm
I would put my money on just the way the RGSS library handles sound playback. TBH I haven't really experimented much with the music/sound aspect of rpg maker; but I do know it's not very good. RGSS, iirc, it only supports 2 channels, one for sound (SE + BGS) and one for music (BGM + ME), therefore, it cannot handle any form of cross-fading--meaning music ALWAYS needs to be stopped before a new BGM/ME can be loaded. Thus, the slight pause between songs. In fact, I dunno why I told you to comment out the sound effect, sounds play on a separate channel than music XD.
See if you have (in that same method) this line:
$game_system.bgm_stop
and comment that out. I don't think that will make a difference, but that's the only thing I can think of.
Another possibility, is if the BGM you are loading as battle music has a delay before the start; then it actually WOULD be starting instantly, just there's a delay (of silence) in the actual audio file. (if that's the case, either get battle music that has no delay, or get Audacity/some kind of audio editing program and cut out the "silence" from the start of the file)
Otherwise, I have no idea why it is doing that--you could always post the entire method here and show us what you have. Maybe there is something causing that in your code....MAYBE (I doubt it)
NOTE: If my first thought is correct, then there isn't really a solution or workaround. There is a script floating around that acts as an interface to the FMOD Audio Engine for RPG Maker XP, which is a much better sound engine and it *may* support multiple channels (I don't remember; I am using it for my game, but I have yet to get any sound/music to implement in my game project, thus I have not tested anything like that)