Does this only work with those vehicles and units you create in game, or with those you installed with the editor?
Anyway, you might try teleporting the occupants out of the vehicle or ejecting them before deleting them.
Eg.
? !(Alive Driver _Unit): _DeadGuy = Driver _Unit; _DeadGuy SetPos [0,0,0]; deletevehicle _DeadGuy
or
? !(Alive Driver _Unit): _DeadGuy = Driver _Unit; _DeadGuy action["EJECT",_Unit]; deletevehicle _DeadGuy
It's might not working because you're targetting the driver, gunner and commander of a given vehicle. Perhaps when they're dead they no longer assume that responsibility and you are therefor targetting bugger-all for deletion. Perhaps you could designate the said unit a name initially (at the start of the script) so you can target them more precisely when you need to?
Altough perhaps not. Not sure how it works with created units, but it's worth a shot. Failing that, perhaps you can just teleport them through the floor and forget about them.