Andrew, your patch has been applied to Jettison 1.3-SNAPSHOT trunk, thanks.
Just FYI, JAXB, as opposed to Aegis, reports an empty string instead of null.
I suspect this is because Jettison now reports START and END element events but does not report CHARACTERS if 'currentValue' is null so JAXB assumes it is the case of something like <id></id>, thus, when we have 'String id', it sets the value of it to "".
I reckon that Jettison may need to enhanced a bit more to deal with properly, that is, if currentValue is null, then, rather than reporting START_ELEMENT, it has to completely skip the current node, but only if it is a simple element, possibly calling processElement() instead of setting an event to START_ELEMENT.
However, I'm not too worried if that not get fixed right now, empty value is definitely better than "null" and as you can see Aegis defaults to "" in case of null.
Please also check JSONProvider.testReadListOfDerivedTypesWithNullField