Vertex buffers work when it's all organized somehow. Particle system (where all particles look similar) or tile map where only thing you would change when scrolling is texture coordinates.

Example of scrolling tilemap with vb:
Say your map is 256x256 and screen shows 30x20 of it, and allows smooth scrolling with floating point coordinates.

Actual rendering area would be 31x21 that is 1 extra rows reserved for scrolling. That makes a vb to be filled with 651 quads (2604 vertices without indexes) or 672 vertices on solid triangle strip.

So map is actually always in same place, X,Y moving between 0 to -1 (glTranslatef() here, don't modify vertex coordinates) and texture coordinates changing based on tile on that spot in map array.