Umm there's a thing i don't undestand: if the vertices are stored on the gfx card instead of system memory, then changing them mean re-uploading them to the card? isn't this a waste of time? or is the memory mapped someway?
Vertex arrays are allways in system memory, VBOs can be, depending on circumstances, in system, video or AGP memory. Sure uploading data ower the system bus takes time, but in immediate mode you're always sending all that data, with VBOs you can upload only the vertices that have changed.