It should. Basically, the startup process doesn't actually look in /etc/init.d, it looks in /etc/rc2.d (or whatever is defined as the startup run level). The files in /etc/rc2.d should be symlinks to files in /etc/init.d:
$ ls -l /etc/rc2.d
total 4
lrwxrwxrwx 1 root root 14 Sep 19 14:13 K16nsca -> ../init.d/nsca
-rw-r--r-- 1 root root 677 Mar 30 2011 README
lrwxrwxrwx 1 root root 19 Aug 15 17:30 S10syslog-ng -> ../init.d/syslog-ng
lrwxrwxrwx 1 root root 23 Jul 6 20:18 S20chef-expander -> ../init.d/chef-expander
lrwxrwxrwx 1 root root 19 Jun 30 19:46 S20chef-solr -> ../init.d/chef-solr
lrwxrwxrwx 1 root root 17 Jun 30 19:46 S20couchdb -> ../init.d/couchdb
lrwxrwxrwx 1 root root 20 Jul 22 16:20 S20fancontrol -> ../init.d/fancontrol
lrwxrwxrwx 1 root root 15 Jun 30 19:46 S20jetty -> ../init.d/jetty
lrwxrwxrwx 1 root root 28 Jul 22 16:20 S20nagios-nrpe-server -> ../init.d/nagios-nrpe-server
and so on.
For Heartbeat to start up on boot, it should have a symlink along those lines.
You can create these links manually, but Ubuntu uses the update-rc.d command to manage those symlinks, so you don't have to.
Since the /etc/rc2.d directory is root-owned and permissioned, you will need to actually run:
$ sudo update-rc.d heartbeat defaults
to run the command with superuser permissions. When it runs, it should show you the set of symlinks it will create. In addition to the one in /etc/rc2.d, it should put similar links in the other /etc/rc?.d directories, including links in /etc/rc6.d (for example) to shut down the service as the box shuts down.