It sounds like you might want to implement a distance check to delete and create VBO's and texture data as the you move around the scene. If a model will soon be visible, then run an initialization function for that model. If it's not going to be visible anymore then delete it. You might have some hick-ups when you move from one area to another.
I certainly would not want to do this every frame for every component.
So far as reusing VBO's that have already been created, I'm not sure this would offer you any benefit. The VBO that is being reused would have to be resized and rewritten, it seems to me that just creating a new one would be the way to go. I don't imagine that reformatting an existing VBO would offer any performance advantage over simply creating one, it seems like you'd have the same overhead either way. Then again, I've never tried this, maybe it would.