Running a service takes more than a fat pipe. You need to handle power outages, need redundant internet connections, ect, ect.
Of course it really depends on the application, but if you host something like a streaming video service where bandwidth is the main factor, you can quickly reach a point where self hosting is cheaper.
With the cloud, that DDoS can bankrupt you by causing you unconstrained bills instead.