Google has written many times that the primary reason for requiring TLS for HTTP/2 were all the inline proxy/load-balancers/devices that screw up/transform HTTP/1.X connections and break them.
If you use the HTTP/1.X Upgrade header path, you are requiring an extra roundtrip to bootstrap an HTTP/1.X connection to an HTTP/2 connection, which sucks.
You can make Application Protocol Negotiation part of the TLS handshake (via the APLN extension), so you can easily get HTTP/2 without anything extra.
HTTP/2 is an opt in protocol that can run concurrently with HTTP/1.X, especially over TLS via the APLN extension.
If you use the HTTP/1.X Upgrade header path, you are requiring an extra roundtrip to bootstrap an HTTP/1.X connection to an HTTP/2 connection, which sucks.
You can make Application Protocol Negotiation part of the TLS handshake (via the APLN extension), so you can easily get HTTP/2 without anything extra.
HTTP/2 is an opt in protocol that can run concurrently with HTTP/1.X, especially over TLS via the APLN extension.