That may not be exactly true. I have been reading articles here and there because I am a NERD.https://hacks.mozilla.org/2017/02/a-crash-course-in-just-in-time-jit-compilers/
Smalltalk (c. 1983) pioneered new aspects of JIT compilations. For example, translation to machine code was done on demand, and the result was cached for later use. When memory became scarce, the system would delete some of this code and regenerate it when it was needed again. Sun's Self language improved these techniques extensively and was at one point the fastest Smalltalk system in the world; achieving up to half the speed of optimized C but with a fully object-oriented language.
IL2CPP is Unity Technology that is there for some platforms and can work on iOS. The Mono is a library for .NET maintained by Microsoft. The way that a .NET works is that there will mostly always be some small part of JIT involved. The rest of the code would be fully compiled.
Pretty much everything nowadays is not fully compiled. The JIT code for .NET uses something code that is half compiled. Somewhere around the symbols part.
Unity is not exactly fully compiled like FLASH is in some way. Pretty much any decompiler can decompile Unity and Flash very accurately and at the same time. You get the variable, class names and the comments.
You cannot exactly say that Unity is native compile. And it is MONO PC standalone.https://www.alanzucconi.com/2015/09/02/a-practical-tutorial-to-hack-and-protect-unity-games/
All fully compiled code should be obfuscated by nature. And you are not supposed to get the variable and classes names back...
There is also issues with garbage collection but it is probably partly due to coding practices. I have seen many developers blame WebGL for memory leaks while other DEVs have managed to do amazing WebGL with super smooth performance.