Because it can be run on the command line, ad hoc. Make -j is great for pre-existing command lists and dependencies. But as the man page describes, parallel is like xargs, which I use all the time on the command line for ad hoc actions (frees me from having to write a bash loop).
make requires a Makefile, whereas one can pass parameters directly to parallel.
There also seems to be a few more options revolving around job success/failure and how to react -- a) ignore failed jobs and report how many at the end, b) cleanly exit as soon as a job fails and c) stop all jobs as soon as one fails.
It can, but that was not its intended purpose. That is, you can figure out a way to map your task to a dependency hierarchy and save it to a Makefile, but why do that when you could use something designed for that?