The unshadow utility combines the password hash stored in the /etc/shadow file with the contents of the /etc/passwd file. When the two files are combined, you can then crack users belonging to specific groups or skip users with expired credentials etc. For example, an expired file with have the shell=/etc/expired in /etc/passwd file, you can tell john to skip all those hashes which have a shell=/etc/expired option set:
john --shells=-/etc/expired <path of unshadow password file>
Note a minus sign infront of the shells parameter. If tell john to skip those hashes having the expired shell.
john --groups=admin,root <path of the unshadow password file>
The above command is going to crack only those accounts which are in the admin and root group. Hence when the two files are combined, you have a lot of flexibility which hashes you want to crack. But you can certainly use john just with the shadow file as well if you want to.