What he's saying is that you shouldn't think of the vertex buffer as a mesh or a material. You should think of the VBO as a lookup table of all your verts. Then, you can create many index buffers, to represent each mesh. Then you do a draw call for each index buffer, and you can set your uniforms necessary to draw the material. Now obviously where this falls apart is if you have vertex-specific information for different materials. If this is the case, you will bloat vertices that don't require this information. Hopefully your data doesn't have too much of that. A simple way to solve this: Group all vertices with a similar vertex layout in the same VBO. Also, AFAIK, you don't want VBOs larger than say 5-6mb, so another exception would be if your meshes were extremely large, in which case you may want to break them out into smaller objects.
Best of luck.