Model.Definitions can contain declarations of model instance-local variables. Everything goes fine when these local variables have simple type - float, int, string, ... The problem is when they are vec* or mat4. Then, they are not treated as local, but as global variables. See this example:
This is because these variable types hold references. When they are cloned they will have references to the same instance.
To force a new unique instance, use vector functions.
Thanks Ville for explanation. I did not realized "pointer nature" of var* variables.
BTW now, it necessary for each such a variable to create its own instance (i.e., to call variable2 = vector*() in OnSpawn section) when instantiating a Model. What about to do it automatically by ZGE? Do you think it would be helpful?