Ну смотри, и там и там - проверка типов в рантайме, в жс есть jit, в cpython - нет. Но стоит добавить cython, в котором ты прописываешь явно типы в коде (что убирает проверки типов из рантайма) - и скорость увеличивается на порядки, в том числе из-за отсутствия проверок и за счет того, что среда выполнения заранее выделяет память под твои объекты
в js к jit не попадает ваши типы с typescript и.т.д. для оптимизации jit сам смотрит какие функции с какими аргументами каких типов вызывается и если это горячая функция делает оптимизацию для этих типов. Если в какой то момент функция вызвался с аргументом другого типа происходит деоптимизация