Здесь осталось много деталей, но:
Jit не совсем такой ... Jit - это Just-In-Time, то есть он не компилируется в нативный код до тех пор, пока код, такой как метод, фактически не будет вызван. Есть только заглушки до тех пор. Это останется в кэше, чтобы последующие вызовы метода не генерировали собственный код заново.
NGen выполняет всю сборку одновременно. NGen делает все сразу, чтобы джиттинг не требовался.