There are likely slight differences in the functionality offered, but they can both be used to achieve the same thing. In fact, here's what the manual page for
When called with --force or when in runlevel 0 or 6, this tool invokes
the reboot(2) system call itself and directly reboots the system. Otherwise this simply invokes the shutdown(8) tool with the appropriate
Also, it appears that the RUN-LEVEL info for both operations is the same. Judging from the manual pages of both reboot and shutdown, it looks like shutdown provides a bit more lower-level functionality, and reboot is a higher-level tool that uses shutdown.