условно у вас есть CPython который парсит питон код и выполняет в режиме интерпретатора (сам интепретатор написан на cи и скомпилирован)
а есть PyPy, который уже делает jit для методов и циклов (пайпай написан на питоне, вернее на подмножестве статически типизированном)
реализация питона/рубей в случае обычного джита будет работать условно как cpython (jit соберет только интерпретатор в нативный код)
в случае graal jit он понимает что за аннотации расставлены на классах интерпретатора и может уже из полученного распаршенного питон/руби кода сделать сразу нативный код, а не интерпретировать его отдельно по узлам (такой pypy)