I had the same problem with ABAQUS not freeing memory when a model is regenerated. I could not solve it.
To minimize the effect of memory leaking, instead of re-generating the model entirely I preferred to have the script modifying the existing model.
The interesting part is that for some simpler model generation scripts that I coded there were no memory leaks. That is: if I had run the same script several times the same amount of memory would have been used. On the other hand I have scripts where ABAQUS allocates additional memory each time the model is (re-)generated.
I think the problem is related to reference counting and garbage collection. In many situations shallow copies of objects are created. It is not difficult to have an object still referenced and not collected (i.e. its memory is not freed).
As an example of shallow copy:
>>>a=[1,2,3,4]
>>> b=a
>>> a[0]=0
>>> print b
[0, 2, 3, 4]
>>> del a
>>> print b
[0, 2, 3, 4]
I think similar situations are likely to happen most probably because of the user code, even though I do not exclude ABAQUS bugs.
If you have time, and the script is not too big you could try run portions of the script to identify what causes the memory leak. For example you could run the first N lines for several times and check the Performance Tab in Windows Task Manager to see if the amount of used memory has increased. If not, then run the first 2N, 3N, ...and so on.
Also, you might be interested in the the garbage collection module (import gc) and reading on reference counting. It should be described in the Python manuals and it should have been included in ABAQUS Scripting Interface.