To be fair it probably also helped that Lua is a simpler language and therefore easier to optimize. A tracing JIT also has an inherent downside: the infamous example of an if in an inner loop with roughly the same probability for the then and else branch.
That said LuaJIT is an impressive piece of software. Would love to know what Mike Pall is up to now.