There are significant memory leaks that will eventually hang or kill the application server if metacat is restarted without terminating the entire server process. E.g. use of log4j dynamic configuration leaves orphan threads about (not really metacat's fault -- I'm amazed this is still a problem). Other threads, classloaders, etc along with the associated resources get left behind as well.
In short: should clean up better.