It doesn't seem to be a problem for Linode to give me the virtual hardware at a reasonable price. Why would Heroku's software on top of that virtual hardware cost so much more? Is their deployment/management software using that much extra resources?
Linode owns the underlying hardware. Heroku is renting it from AWS. When you own your resources, you have more control over your margins (traditionally).