Why SORTWORKdd is not mandatory:
//SORTWKdd DD :
Defines a work data set for a sort. Typically not needed, because DFSORT can allocate work data sets for a sort dynamically.
Why STEPLIB not needed for SORT JCL:
/STEPLIB DD :
The DFSORT program would typically be in a library known to the system, so the //STEPLIB DD statement would not be needed. However, if DFSORT is not in a library known to the system, the //STEPLIB DD statement defines the library containing the DFSORT program.