It's a bit historical.
`halt` was used before ACPI (which today will turn off the power for you)*. It would halt the system and then print a message to the effect of "it's ok to power off now". Back then there were physical on/off switches, rather than the combo ACPI controlled power button of modern computers.
`poweroff`, naturally will halt the system and then call ACPI power off.
* These days `halt` is smart enough to automatically call `poweroff` if ACPI is enabled. In fact, they are functionally equivalent now.