std::vector<sf::Vertex> vertices;
// Fill it up somewhere around here
// Erase stuff around here
renderTarget.draw(vertices.data(), vertices.size(), thePrimitiveType);
Because... you can...
Maybe instead of asking why sf::VertexArray doesn't have .erase() you should ask why even keep it at all? At the moment, sf::VertexArray is nothing more than a data structure containing said vector, a saved primitive type and a (more or less helpful) way of getting the bounds of the contained vertices. The last part could be implemented using std::for_each.
Who knows... maybe it might get discarded in SFML 3... maybe not. I don't really have an opinion on this. You just use the right tool for the right job.