The sequence would only be wrong if it ever returned the same value twice. There's no requirement that values of a sequence should be consecutive, nor should you ever rely on them being so. The reason you're not getting consecutive numbers is probably the way BDB JE handles multi-threading efficiently: opening a handle to a sequence will "pre-allocate" a range of values to be used exclusively by that handle, so that it can give you new values without having to do an expensive database lock operation every time.
You can either just not care about the actual values of your IDs (this is the preferred option) or open the sequence manually using Database.openSequence()
and manipulate it directly.