Background workers only cost you money (5¢/hour) when they're running. It's prorated to the second. You can avoid running one constantly by using pedro's "autoscaling" branch, meaning you can run a few hours of background processing--which should equate to hundreds or thousands of jobs--every month for a few nickels.
http://github.com/pedro/delayed_job/tree/autoscaling
Pedro is a Heroku employee, so this use is totally fine by them, although the branch is not officially supported software.
[I'm friends with a few guys there, but I don't work there.]