jit позволяет более точный профиль собрать
у jvm версии получше gc (можно выбрать который в первую очередь на уменьшение пауз заточен)
у native image более быстрый стартап (нету этапа интерпретации и прогрева пока jit сработает)
меньше памяти ест (так как не нужно классфайлы загружать и много другой метаинфы)
лучше native image:
поэтому если у вас лямбда (максимально быстрый стартап и потребление памяти)
долгоиграющее приложение без нагрузки (чем меньше есть, тем меньше нужно ресурсов, можно на те же ресурсы что для jvm поднять 3 native image и получить ha)
вашему сервису нужно быстро скейлится (прилетело +100% нагрузки, подняли контейнеры, через пол часа их заглушили)
лучше jvm:
высоконагруженный долгоиграющий сервис (тут важна пиковая производительсность, а то что он разогревается пол часа то и фиг с ним, всё равно рестарты редки. это всякие сервера кафки и hbase и тд)