A command can be scheduled. A job cannot be scheduled.
In general, jobs are used if you have a background task that needs to be handled, while the user shouldn't wait for it. For example, storing a thumbnail of an original image. Most jobs are fired whenever something is performing an action. Singing up, storing an image, retrieving data from an API. These jobs are separated classes that handle a certain action. They can be queued as well.
Commands are not request based. They can be scheduled using the scheduler or manually run using the command line. They also perform a certain action. They are not cued and are different than jobs. They execute the action right away. It is possible as a command to fire of a job as well.
So in short:
- Commands is command line
- Jobs is actions that can be queued