OK. I can now see what is going on. It's technically a "bug" (or missing API) in JAXB. See:
Basically, for code generation, we need to know the class names that JAXB determined for the various wrappers and parameters. We call a method on the JAXB model passing the QName in and get a special object back with the classname in it. However, JAXB only passes back stuff it actually generated. In the case of episodes, it didn't generate anything. Thus, null is returned and we cannot proceed. Ideally, JAXB would return a proper object for us so we can get the information.
I think this is why I've seen mixed results with episode files and CXF. The use cases I've seen before use episodes for their domain schemas, but not for the "wrapper" schemas used for the wsdl/soap interactions. For example, a "PurchaseOrder" object would be in the episode, but the "submitPO" and "submitPOResponse" schemas would be in the wsdl (which would import the domain schema). That use case WOULD work fine. JAXB would generate the SubmitPO object so null would not be returned.
Without that fix in JAXB, I'm not sure what options we have. The ONLY thing I can think of is to parse and process the episode files ourselves and if jaxb returns null, start searching through them to see if a type is mapped or not. Quite a bit fragile.