what's the difference between them?
This is "DestroyTrigger".
JASS:
native DestroyTrigger takes trigger whichTrigger returns nothing
This is "Trigger-Turn off Trigger" aka "DisableTrigger"
JASS:
native DisableTrigger takes trigger whichTrigger returns nothing
As you can see they are completly different native functions meaning there is very little chance of them behaving in a similar way.
DestroyTrigger's behaviour is implied by its name. It attampts to destroy the passed trigger handle, freeing the resources it used. In addition to this, it also will destroy all attached events. Apparently it does not destroy attached conditions and actions so those will have to be dealt with separatly with their appropiate deconstructors. Unfortunatly this function is not always sucessful when called and can instead result in a fatal error (game crash) in the case that a trigger is in a certain unsupported state during the deconstruction attempt.
DisableTrigger's behaviour is also implied by its name. It turns the passed trigger off preventing all bound events from executing the trigger. Disabling a trigger will obviously not free all tied up system resources.
Imagine a trigger being an airconditioning system keeping your house at a constant temperature. This is a good comparision as airconditioning also has events (changes in teperature), conditions (certain temperature settings) and actions (turn on heater / cooler).
DestroyTrigger is like ripping out the airconditioning control system. All teperature sensors are gone so is the control electronics but the teperature setting pannel (condition) still remains and the working elements (actions) also remain installed.
DisableTrigger is like turning off the airconditioning system. You can still turn it on again at any time and it will still exist in your house but it just will be off and do nothing.