разная частота вызовов функции в
requestAnimationFrame()
– зависит от устройства, активности/неактивности вкладки и др.
Но в вашу функцию параметром при вызове
передаётся время, прошедшее с некого момента старта, первого вызова. И положение куба стоит расчитывать исходя не из числа вызовов функции, а только исходя из времени.
Так анимация в разных условиях будет иметь идентичную скорость перемещения куба, хоть и с разной частотой кадров: где-то плавнее, где-то скачками, но, например, коснётся пола он одновременно на всех устройствах.