Here's a very brief summary:
PARFOR is much simpler to use than SPMD, and should normally be your first choice when attempting to parallelize a collection of independent calculations. You need to be sure that your calculations are not order-dependent (i.e. they must not rely on the results of preceding calculations).
SPMD is somewhat harder to use, but allows communication between workers using labSend and labReceive. This is also the appropriate choice if you wish to implement new functionality for distributed arrays.