In many scripting languages this is not the case, and you are ever only passing around references. Python comes to mind.
Lots of people obviously have a problem with this as it deeply different from the algebra derived assignment syntax.
local a = b creates a local copy, but even then, its not a deepcopy, containing references to other tables.