I see both your points (lack of compatibility, problem with reserved keywords in Java). In the latter case we're poking against brain-deadness of Java, so it's not just XML that's braindead, see?
To resolve both points, maybe the following strategy could be used:
Instead of immediately emitting a java enum, collect all symbols that should be generated.
Then determine whether upcasing would give a clash
If so, emit symbols unchanged in case.
If not, emit symbols in uppercase as it used to be.
This would cover more cases than before, still of course not resolving issues with e.g. "true" or "while" as one of the enumerated values. I agree that at some point the user has to interfere, I'd just like to see the borderline where the user has to take action moved further away. Also for the cases where upcasing all symbols would previously work (i.e. no clash), still uppercase symbols would be generated.
I might add: If a user specifies a symbol via mapping file, do not change case of that specified symbol.