JiBX uses toString() method of an enum to marshall the enum and then again it uses valueOf() to unmarshall it by default. The problem is, that while toString()-method of an enum returns name() by default (that is the enum name as defined in the source code), toString() is actually to be used to provide human readable representation for the enum. On the other hand method name() always returns the enum name as defined in the source code. Actually valueOf()-method needs to be given this name, not the name returned by toString() in order to success.
So the right method pair is not toString() and valueOf() but name() and valueOf(). Using name() and valueOf() it is possible to override the human readable representations (eg. if locale changes) but still the XML-representation stays the same.
Current workaround is to use enum-value-method="name", but better solution would be fix the problem.