According to EL 3.0 Spec 1.23.1 and 1.23.2 the Rule for null String is to coerce to "". EL RI 3.0 behaves that way, but jasper-el 8 doesn't. The null-String to "" coercion works well in ValueExpression.getValue(elContext), but in case of ValueExpression.setValue(elContext, null) jasper-el 8 does not coerce null-String to "", instead null ends up on the VE target.
One more thing to mention: I think the EL Spec is wrong to define null String must be converted to "". If you also think the spec'ed behavior for null String is wrong, support the EL spec issue https://java.net/jira/browse/EL_SPEC-18
This has been fixed in 8.0.x for 8.0.7 onwards.
Please remove this aligment to spec on setValue method. Because javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL do not WORK with jasper-el 8 EL RI javax.el-3.0.1-b08.jar - already did this.
We can look at adding an option to make this configurable but, by default, Tomcat is going to remain specification compliant.
As of 8.0.16 this can be worked around using a custom resolver (thanks to the fix for bz 57309).