I’m no expert and haven’t used the OnCuePoint output, but I think you should try OnNearlyFinished instead. When most people run into small gaps between their sounds, it is because they are using the OnFinished output, and I imagine OnCuePoint works very similarly.
The OnNearlyFinished output triggers on the next-to-last audio render block before the sound ends, meaning it has just enough time to queue up the next play trigger to happen seamlessly in the next audio render block.
Perhaps someone else can give a more precise technical explanation, but give it a go and report back!