It's interesting that the author didn't mention a third option– you can build your own subscription management and dunning code, and then foist the high-risk credit card related stuff onto a third party. I'm not sure I'd necessarily suggest doing this over going with a provider like Chargify or Spreedly (both look like cool services), but that's what we've done at Onehub, and while it was painful, it's worked extremely well. We just store tokens and let our payment gateway, Braintree, deal with the actual card data and charging.
Additionally, if you are going to write any of your own billing code, I sure hope it's not buggy and poorly tested. If it is, you should probably test and debug it before unleashing it to your customers :)