I usually base this decision on the longevity of the product. When I build a marketing or short-term use site/app, I usually bundle the cost of Heroku, monitoring, etc. into the contract just because the amount of time I would have to spend helping the client get their own Heroku account set up isn’t worth it.
For most of my clients, where I’m helping them get their MVP (initial product) built and then may or may not have an ongoing relationship, I invest the time to help them get set up on Heroku themselves. I explain this as they should “own” their own resources, and be able to sever their relationship with me at will.
For clients who want me to do their monitoring for things like uptime, exceptions, etc. I charge a monthly fee for them to get hooked into my accounts and for me to pay attention to their outages, etc.
If you are paying the bill for a client’s resources, make sure they are paying in advance for the resources (you shouldn’t be giving the client a loan in the form of server time), and that you start notifying them well in advance of the termination of your contract that they need to renew. If they stop or are slow at paying and you have to pull the plug, sometimes clients will blame you for the outage even though it’s their delinquent behavior.
That’s my two cents.