Probably this is the beginning of the cause:
while {_vcl distance _pos < 5 && canMove _vcl} do
{
sleep 1;
};
Your empty vehicles move away of the spawn point when hitched, the script might assume they have been abandoned away of the spawn position, a bit later the script deletes the vehicle and replaces it with a new one.
Also the forEach present in the script are quite odd, none of them has any sense for me.
For example, what is this supposed to do?
{damage _x} forEach crew _vcl >= 1