I would go height map for a terrain editor. Bullet's height map object allows for the map array to be dynamically modified. Creating a new btBvhTriangleMeshShape every time the terrain is modified may or may not be too slow, but using the height map wouldn't require quite as much Bullet-related code.
On the other hand, do you really need physics *while* the terrain is being altered/extruded/etc? You could stop physics, allow the user to extrude (terminology?) a hill, and then start simulating again after building a new btBvhTriangleMeshShape. If your editor includes placing other objects (like debris), you might need to use an invisible sphere to push away other objects before creating a new btBvhTriangleMeshShape. Or even try to detect which non-static objects would need to be moved and just warp them above the new highest point in the area and let them fall back down (the user will have to re-place them, but hey, they rose a hill there).
Disclaimer: I've never written such an editor; I use Blender (poorly).
True, that is an advantage to using a heightmap. But it really limits how you can edit the vertices.
As for the triangle mesh method:
I suppose I can disable physics while editing, which would make it necessary to make a new class which has the vertices. The problem I can see with that, is I would need to reimplement certain features Bullet does for me, such as raycasting.
Anyone else have any thoughts?