You are correct; this is the biggest disadvantage of a PID controller. Oscillation will happen as a result of system inertia, but there's no way to "inform" the PID controller as to how much inertia it should expect.
Another factor would be actuator saturation. A cruise control system that would floor a gas pedal trying to get from 0 to 25 would also floor the gas pedal trying to get from 0 to 100; so in that instance there's not going to be too much difference regarding the initial transient.
Generally speaking, the best approach if you don't know the process is simply to tune for the anticipated scenario. I've seen brute force methods try to swap control gains depending on the scenario at hand, if you expected distinctly different operating conditions (like startup, normal operation, and shutdown).
If you know the process but don't want to get into more complex controls then you can try to estimate the required control signal given current conditions. This is known as "feed-forward" control, and leaves your PID controller to make up the difference between the result of your feed-forward controller and the actual system output. This is very common in industrial controls, especially motor speed/torque control. You input rotor inertia, load inertia, etc., along with the motor parameters and can generally ballpark the current required to achieve a specific speed profile. The PID controller then just makes up the difference.
Finally, if you know the process and are willing to get more in-depth, model-based control would be the approach. Techniques like state feedback controls exist that allow you to take a model of your system and use that model to define the controller.