I was recently writing some OpenGL 3.3 code with Vertex Array Objects (VAO) and tested it later on Intel graphics adapter where I found, to my disappointment, that element
I actually believe that ARB VAO is missing the element array buffer binding (or any other buffer binding) state.
Belief is not required; the spec tells the facts.
From the ARB_vertex_array_object specification:
The command
void GenVertexArrays(sizei n, uint *arrays);
returns previous unused vertex array object names in . These names are marked as used, for the purposes of GenVertexArrays only, and are initialized with the state listed in tables 6.6 (except for the CLIENT_ACTIVE_TEXTURE selector state), 6.7 and 6.8 (except for the ARRAY_BUFFER_BINDING state).
So there we have it: the entire state encompassed by VAOs are the contents of those three tables, with the noted exceptions.
The extension is written against The OpenGL Graphics Specification version 2.1 (PDF). Therefore, any page numbers, section labels, or table numbers are referenced relative to that spec.
I'm not about to copy those three tables here. But if you look on page 273 (by the spec's page count)/page 287 (by the number of physical pages), you will find table 6.8. And on that table is the following:
There is no ambiguity here. The information may not be plainly stated. But it is there, unquestionably. The ELEMENT_ARRAY_BUFFER_BINDING is part of VAO state.
Therefore, your problem can come from one of two sources:
Driver bug. As I stated in a comment, a driver bug seems unlikely. Not impossible, just unlikely. NVIDIA's drivers are pretty self-similar for different hardware, and VAOs are hardly mirrored in hardware. Unless you are using different versions of the drivers, there's little reason to expect an error to be due to a driver bug.
User error. I know you claim that your code works, and therefore it's fine. Everyone makes that claim about some code. And there have been plenty of times when I would swear up and down that some code was working just fine. Yet it was broken; it just so happened to get by. It happens. If you post your code, then at least we would be able to discount this possibility. Otherwise, we have nothing more than your word. And considering how often human beings are wrong about that, that isn't worth much.