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 reboot says:
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
arguments.
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.