Having a correct Content-Type has always been required. However, the first time Java enforced the requirement one implementation had an issue. Once that was fixed Java forgot to enforce it again until recently. And then that found a new bug. We decided to workaround the bug on our release, but not on master, because we
really, really want Content-Type to be a useful signal.
Not having the Content-Type required makes error messages much less helpful when the remote is not gRPC. Instead of "Not a gRPC server" you get an error like "Frame header malformed: reserved bits not zero." Some proxies also add in a Content-Type of text/html if the content type is missing, so things can get messy without it.