When you select "Run as hardware" from the IDE it does the following:
1) downloads the code to the target using nios2-download. This will set up your uninitialised memory. nios2-download then starts the processor at the entry point specified in the ELF file.
2) starts nios2-terminal to listen on the JTAG UART or UART specified.
There is no boot loader on the target (Nios II) side in this case - the download is all done by the JTAG debug core built in to the processor.
nios2-download talks to the JTAG debug core, nios2-terminal talks to the JTAG UART. They are separate command line applications which are pulled together by the IDE.