This may be completely off on the wrong track, but I suspect this really relates to the underlying C library implementation. I seem to remember reading (quite some time ago) about limitations on some platforms in the ability of some C libraries being able to give memory back to the operating system. My recall is vague as it was a long time ago, but in essence, while an app can release memory it no longer requires, that memory is not actually released back to the OS to be used by other apps until the app has exited. The upshot is that while the app i.e. emacs, may have freed/released memory, the OS won't see that released memory until after emacs has exited.
I can say that I use emacs intensively on both Linux and OSX and run for long periods of time and certainly don't notice any loss of available memory or emacs growing in footprint size.