Why for now? I see zero reason why that should change.
It's not like Heroku was zero maintenance. I often ran into resource limits. I did a fair amount of optimisation on jemalloc to make sure Rails didn't run into Heroku's ridiculously low RAM limits because of loading too many ActiveRecord objects. Yeah, sure, I should probably paginate better, but now I have so much RAM it literally doesn't matter.
Heroku also regularly asked me to schedule DB maintenance. Before I paid for the expensive DB, that meant the connection string could also change, which meant I had to redeploy my AI workers (i.e. background jobs that need a GPU) that were hosted outside of Heroku. Now it still warns me that the connection string would change, but it somehow didn't anymore. Ah well. All problems of the past.
The solution in Heroku was always to throw more money at it, and the increments were quite serious. With Hetzner, I now have massively overprovisioned servers that cost a fraction.
For now?