The powersave feature only kicks in for simple scripts, not for complex ones that start their own tasks.
Yes, the above script makes use of an undocumented trick. I've assumed some simple scripts may need to run for more than 1 minute, so with this powersave trick, it would work out of the box.
In contrast, scripts that create a menu will run as long as you have the camera powered on, so powersave is not disabled in this case.
In ML core, tasks spawned from ML menu (run_in_separate_task) also have the powersave trick enabled, as they are meant to be temporary (see e.g. benchmarks - they usually take more than 30 seconds - the default auto power off setting on certain models). Tasks spawned from Lua could use the same trick - looking into it; meanwhile, try running your script as "simple" (from the main body, without creating a menu). My example is the complete script (but you need the experimental Lua build to run it).
There's no option for parameters in simple scripts yet (todo: borrow it from CHDK), but you can edit the script directly on the camera.
To drain the battery faster, just go to LiveView, and exit when finished (lv.start() and lv.stop()). The 60p mode will drain the battery even faster (but you can't select it from Lua yet).
You also have
battery.drain_rate and time_remaining (updated whenever the percentage value reported by Canon firmware changes).