(Responding to old post, but still...)
The lack of full coroutines (generators and lambdas are NOT coroutines) is what decided me. A game scripting language often has to do AI in a per-frame loop, where you make PART of each decision each time a frame "ticks." The cleanest, best paradigm for doing this (IMO, and in the opinion of most on AIGameDev.Net) is the Behavior Tree pattern.
Behavior trees depend upon coroutines for cleanest implementation. You can definitely write a functional behavior tree using nothing but generators (and, I've done this in both C# and Python), but the overhead of remembering where you can and can't yield is unpleasant and forces you to think more about the language than about the behavior you're representing. Lua's coroutine.yield() -- which works ANYWHERE, not just in a generator -- produces a full symmetric coroutine implementation that makes behavior trees a joy to work with.
Thus Lua is better for use in game situations where you can't just run forever, but have to carefully parcel up your work per time-slice (e.g., per frame), and resume where you left off on the next frame.
Note: I know that you can design around these limitations through the use of things like blackboard objects, and I know that generators can produce an implementation of behavior trees. My point is that this design pattern comes naturally and almost without cost in Lua, whereas in other first-order embeddable languages (Python, C#), you have to do a fair amount of work in the game scripts to support it. That transparency is what decided me to choose Lua over Python (and I'd wager what is leading other big game shops like Blizzard to make the same choice).
As a standalone app language, I'd take Python ANY DAY for its rich library support and out-of-the-box object model. As an embedded game language, Lua wins -- hands down.