That behaviour is to be expected.
The reference to DestroyAllJunk is stored at the time the dialog is defined, so anything you do to that function afterwards (like adding a hook, which essentially replaces DestroyAllJunk) doesn't apply to the callback of the dialog. ZOS would have to change the line
Lua Code:
callback = DestroyAllJunk,
to
Lua Code:
callback = function() DestroyAllJunk() end,
so it gets the hooked DestroyAllJunk function at the time the callback is run.
Otherwise you have to manually replace the callback after you added the hook like Baertram said.