As noted by many, just because you have access to the source doesn't give you the right to do as you like with it.
You ask
Aren't almost all scripts interpreted? That is to say, doesn't the device interpreting the script need the "source," by definition?
No. Even in an interpreter, the source goes through several transformations before being interpreted. The form that is ultimately interpreted is often a sequence of instructions for a stack-based or register-based virtual machine; such instructions are usually called "bytecode". It is also possible to interpret internal trees relatively efficiently. Interpreters designed primarily for teaching purposes may use even less efficient schemes.
Some implementations permit you to take the internal form and write it to disk, from which it can be re-read and interpreted. The perceived advantages are usually
Programs load and run faster because the initial processing stages are performed once before the internal form is written, then reused over and over.
The internal form protects the source code from prying eyes.
The main disadvantage is that a typical internal form is usually less portable than source code, perhaps because of differences in byte order or word size.
In the particular case of Lua, the luac
compiler will write bytecode to disk. It is seldom used because the bytecodes are not portable and because the compiler is already quite fast. In the particular case of World of Warcraft, they are actually encouraging people to use Lua to modify the interface and to customize the experience; they want everybody to share code and so keep it open source. WoW has over 10 million subscribers, and at least 5000 people have contributed code. so that's a half a percent of the user base that have contributed some code, which gives me happy thoughts about the future of programming as a profession.