OozieSharelibCLI (invoked via running oozie-setup.sh sharelib commands) should not load the ext services (i.e. oozie.services.ext). This is unnecessary and can even lead to problems. For example, if you enable JMS/SLA messaging, you'll add the EventHandlerService which will get loaded when you run OozieSharelibCLI; however, this will fail because OozieSharelibCLI doesn't load the SchedulerService, which EventHandlerService tries to use and you get an NullPointerException. This prevents anyone who is using this feature from (easily) updating their sharelib.
This isn't a problem for OozieDBCLI even though it uses Services because it doesn't actually init() them.