At this stage you come across as though you're just looking for excuses to be disagreeable.
Were VAOs backwards compatible with client-side arrays? Is glVertexAttribPointer backwards compatible with other gl*Pointer calls? Do VBOs modify the meaning of all gl*Pointer calls?
It doesn't need to be backwards compatible, it's modified behaviour, a simple glEnable is all that's needed to tell the driver "OK, I'm using this modified behaviour now, so if I call glBindSampler (31, samplerNum) don't assume that you need to fix up the world-of-crazy I've just fed you but give me a nice clean error instead".
