One difference seems to be that in Duktape you can only generate bytecode for one function at a time (duk_dump_function) while in Lua you can just load your whole script and dump it as bytecode (lua_dump). Sure, you can wrap your code in a self executing function in JS to get around this. But Lua looks to be somewhat more convenient for this use case.