Aside from what everyone else is saying about the semantics, there were also a lot of changes in the header format to make it easier to parse in hardware by ASICs. Fixed-length basic header, a single integer flag that indicates to routers when they need to parse variable-length options, a requirement that in the unlikely event they are used that those options need to be 64-bit-aligned, etc.
As long as they were breaking compatibility, all kinds of details were changed to make things easier on implementers.
As long as they were breaking compatibility, all kinds of details were changed to make things easier on implementers.