Isn't this enough?
luaL_error(L, "%s", lua_pushfstring(L, va_list))
Not exactly since luaL_error prepends the where string as well (at least in 5.1). So a va_list version might take a level as well.
I realize I can just copy the code. Ideally any API with vararg functions offers a va_list version, but up to you of course.