Because the specification tells them to --
I don't get why it was enforced
The default vertex array object (the name zero) is also deprecated.
Calling VertexAttribPointer when no vertex array object is bound will generate an INVALID OPERATION error.
ATI is wrongly bending the rules of the specification in this case, so they're the ones at fault, not nVidia.