Pretty much all GP tools can cause a memory leak if run enough times in a single script. This is due mostly to the geoprocessing history logging I believe, and I could be mistaken, but I recall coming across that explanation at some point. The only work around I've found to this is to call your highly repetitive tools in functions in external scripts that can be imported, processed and unloaded for each iteration. I've only had to do this once, when doing various checks and analysis and then projecting an entire database to multiple different coordinate systems, but that was how I got it to work.
An alternative could be to simply turn off logging, but for some reason that didn't work for me.