Well first of all it's way of adding objects to the pool is actually identical to the way I did.
They also seem to optimize the creation of autorelease pools, by not actually freeing old instances of a thread but keeping them around. Now I don't know... At first I thought that would be superflous, as I rarely ever allocate NSAutoreleasePools. But if you have loops where you create and destroy them often to conserve memory it could be conceivably worth it. I'd bet that this has no measureable effect whatsoever, except in synthetic benchmarks. Which .. makes it worth it :)
Deallocation of pooled objects is implemented naively in GNUstep :).
So I'd expect that the MulleAutoreleasePool would handily beat the GNUstep NSAutoreleasePool when the pool contains many objects.