Ah, so I guess I see it a little differently. To me "empty incoming body" means Content-Length == 0. So, there's no content in the stream and the MessageBodyReader should represent that in a non-null object form.
To your point of MessageBodyReader<String>, that would be just
if (contentLength == 0)
return new String();
Here's what was added to 1.1:
"See Issue 55. Clarify handling of empty message bodies for standard message body readers. All bar JAXB will result in an empty (not null) object being passed to the resource method. Using the JAXB entity provider will result in a 400 client error. Add description of how to override default behavior using a custom provider."