Stale data and SmartDashboard
SmartDashboard uses NetworkTables for communicating values between the robot and the driver station laptop. Network Tables acts as a distributed table of name and value pairs. If a name/value pair is added to either the client (laptop) or server (robot) it is replicated to the other. If a name/value pair is deleted from, say, the robot but the SmartDashboard or TableViewer are still running, then when the robot is restarted, the old values will still appear in the SmartDashboard and TableViewer because they never stopped running and continue to have those values in their tables. When the robot restarts, those old values will be replicated to the robot.
To ensure that the SmartDashboard and TableViewer are showing exactly the same values, it is necessary to restart all of them at the same time. That way, old values that one is holding won't get replicated to the others.
This usually isn't a problem if the program isn't constantly changing, but if the program is in development and the set of keys being added to NetworkTables is constantly changing, then it might be necessary to do the restart of everything to accurately see what is current.