Per the following discussion thread on the JiBX-users list
Tryng to bind xsd:choice – JiBX requires each choice to be present
the current implementation of xsd:choice handling via the "choice=true" qualifier misses an important constraint on xsd:choice particles: exactly one of the choice values must be provided in a valid document instance. At present JiBX forces the mapping to note each choice value as optional ("usage=optional"), and in fact permits all the constituent values to be optional, accepting zero of them being present in an instance document as valid. JiBX should enforce that one and only one choice value is provided for each "choice=true"-qualified structure.
While on this topic, it's confusing to the mapping author to have to specify "usage=optional" in addition to the "choice=true" qualifier. The optional implication isn't really what's intended here. We're trying to say "one and only one of these", not that "some or all of these are optional". Toward that, I suggest either introducing a "choice" element or at least dropping the requirement to specify "optional=true" on each of the constituent choice values.