As a sidenote, why does almost everything leak @_@...
It is pretty simple actually.
Let me first explain what is memory leak - most things in WCIII are objects (they have some attributes and some methods linked to it) - all this information for each instance of an object takes some PC's memory (imagine an object as WCIII's "unit" and an instance here is an actual unit in game). Now a memory leak is when such an object has no longer any use to you (the map developer/player) and you lost all reference to this object (simply put there is no way to operate with it anymore). What you end up with is a useless object that persists in the game, taking your PC's memory with it.
Now a lone object doesn't take that much memory, which is why your map gets laggy gradually, as you're building up those leaking objects.
Some programming languages have a so called garbage collector, which automatically removes "unused" stuff. However WCIII simply does not know if you have any more use for that stuff or not. Imagine creating a special effect in some location. You can have two scenarios here:
a) You create the effect as a part of a spell (e.g. fiery explosion for some bomb)
b) You create the effect as part of a map (e.g. moon beam, sunshine, rain, etc.)
Now for option a) the garbage collector could've been of some use - the explosion goes off, then dissipates. Now the object (=special effect) has no use for you, so garbage collector takes care of it.
However what about option b)? Garbage collector could pretty much remove your sunshine even though you want it to persist till the end of the map.
Notice here that you don't need any reference to the effect from case b), because the effect is still useful to you.
So yeah, you need to manually take care of this, because you (as the developer) control the map and what happens there.