What move_base does is navigation. It provides an action interface that accepts 2D cartesian coordinates. The move_base node will try to reach the coordinate given using local and global path planners, taking the map of the environment into account and avoiding collisions with obstacles. This means you have obstacle avoidance, but you don't have full control over the path that move_base chooses to reach its goal.
So, what do you want? If you want the robot to drive along a series of waypoints while doing obstacle avoidance, and you don't really care about the exact path the robot chooses, use move_base. If you want the robot to follow a spline through a series of waypoints, and you care very much about the path being exactly on that spline, but you don't want obstacle avoidance, write your own code that directly publishes to the cmd_vel topic (see this tutorial).