Bash seems to send the SIGHUP only if it self received a SIGHUP, which for example occurs when a virtual terminal is closed or when the SSH connection is interrupted. From the documentation:
The shell exits by default upon receipt of a SIGHUP. Before exiting, an interactive shell resends the SIGHUP to all jobs, running or stopped. Stopped jobs are sent SIGCONT to ensure that they receive the SIGHUP. To prevent the shell from sending the SIGHUP signal to a particular job, it should be removed from the jobs table with the disown builtin (see Job Control Builtins) or marked to not receive SIGHUP using disown -h.
So if you type exit or press Ctrl+D all background process will remain, since this does not send a hang up signal to the Bash.
You can force Bash to warn you about the fact that there are still running background processes with
shopt -s checkjobs There is an option to send the SIGHUP on exit, but if you are in an interactive shell(see here). But it does notdoesn't work on my machine with Bash 4.2.25. Maybe it works for you
shopt -s huponexit