So in theory it's not required but in practice it is? And to think it used to be IE which didn't follow specs.
The browsers follow the spec fine. The requirement for SSL was almost in the spec, and support for non-SSL is optional for a reason.
Pushing people onto SSL is good.
II just like pushing people around in general.
Well, the specification defines two negociation procedures. You are not forced to support both, you are not even forced to support one, but then how would you make use of it? And you are also free to negociate it another way should you decide to. The spec defines the protocol, not the transport on which it is used or the way the underlying communication is established. They could have put the two negociation methods in another RFC for what it's worth, since they don't affect the inner workings of the protocol itself.
One reason it's required in practice is meddling proxies, which are usually eliminated with TLS, unless you're a corporate user or a Kazakh.