It is indeed very easy to get confused by the meta-structure of enums, which is IMHO broken in Ecore. An enumeration literal is the only EObject that has no Exxx existence at run-time requiring OCL to work hard to reconstruct it. You seem to have found a path where this is not happening.
There is no problem with Ecore for this example. There is a perfectly good EEnumLiteral but an invalid EEnum that has no EPackage.
I really cannot understand why you are creating dynamic EEnums in an extension XMI. This seems to fly in the face of every kind of discipline that we pursue with models. I recommend that you stick to XML so that you can do whatever you like without any unhelpful discipline.