I still see those gaps. I made a stack trace whenever asCScriptEngine::GetNextScriptFunctionId() returns id that is eventually a null entry in scriptFunctions, for each of ~100 functions I checked it's always the same:
asCScriptEngine::GetNextScriptFunctionId() Line 4409 C++ asCReader::ReadFunction(bool & isNew=true, bool addToModule=false, bool addToEngine=false, bool addToGC=true) Line 646 + 0xb bytes C++ asCReader::ReadInner() Line 350 + 0x12 bytes C++ asCReader::Read(bool * wasDebugInfoStripped=0x00000000) Line 71 + 0x8 bytes C++ asCModule::LoadByteCode(asIBinaryStream * in=0x0d533f0c, bool * wasDebugInfoStripped=0x00000000) Line 1187 + 0xf bytes C++
Trying to step debug to the end of ReadFunction didn't reveal much, but I can tell that the function was imported.
 A wild guess: imported but unused functions?