The purgeLibs method only gets called on startup of the first Oozie server. This means that if you update the sharelib without restarting Oozie, then Oozie will never clean up the old sharelibs and launcherlibs until you restart the server. In fact, with Oozie HA, it will never clean up unless you restart all of the servers at the same time (in other words, a rolling restart or just restarting one Oozie will never cause purgeLibs to get called).
This should be moved into a background thread (i.e. scheduled with SchedulerService) to run periodically. Once a day is probably good enough, but we could make it configurable if needed.