Vertical is simpler and has a ceiling
Doubling CPU and memory requires no code change and is usually a reboot. It is the right first move, and it stops working when one machine is no longer enough or becomes a single point of failure.
Horizontal needs stateless application code
Two servers only work if a request can be served by either. That means sessions in a shared store, uploads on shared storage, and no reliance on local disk. Retrofitting that is the real cost.
The order that works
Optimise, then scale vertically, then scale horizontally. Teams that skip the first step buy capacity to run inefficient code, and the bill grows faster than the traffic.