I run most of my own servers because apparently I don't have enough things that can break.
That's the joke. Here's the actual reason: I want to be able to open the machinery. When a deploy fails on a platform I don't control, I get a status page and a support form. When it fails on a box I set up, I get a log file and an afternoon. I'd rather have the afternoon.
I'm not making a general recommendation. For a lot of people — probably most people — a managed platform is the correct answer, and I'll happily put a client on one when it's the right call. The tradeoff I'm making is specific to me: I'd rather understand the whole path from idea to running process than save the hours.
The side effect is that when a client's site does something strange at 11 p.m., I usually already know which layer to suspect. That knowledge came from breaking my own things first, which is the only way I've ever reliably learned anything about a system.