Really it depends on how much control you want and/or what you’re trying to achieve.
You can move a mesh vertex in a material through WPO but it won’t update the bounds of the object. You’ll need to come up with a creative way to mask the vertices/vertex you want to move. Vertex painting is probably a good way to do that, but again you don’t have control over each vertices direct position unless you want to go through and painstakingly paint each vertex a unique colour for the code to identify it by. All of that can be done with simple material parameters for fairly simple vertex movement. WPO is meant to be used for small offsets though, not huge changes.
There’s probably something you can do to move the vertices of a mesh directly in code but it won’t be very artist friendly (I also don’t know what the relevant code is to look at for that but some folks around here will). Or, you may want to also consider the procedural/custom mesh approach. All depends on the situation.