Deciding what fairness conditions it is reasonable to assume requires experience. A typical example of specifications where you do not want to require fairness for some of the actions are overlay algorithms, such as termination detection [1]: here one needs to describe "environment" transitions that represent actions of the underlying algorithm, but typically one wants to impose fairness conditions only on actions of the overlay (termination detection) algorithm.
I am not sure I follow your argument about Spin vs. TLC: both are finite-state model checkers, so you will have to bound the number of processes that execute. In TLA+, you typically declare a constant that represents the set of overall process IDs, and a process may very well start when other processes have already executed. In fact, you may define an action that represents process creation. For model checking with TLC, you will have to bound the state space, either by making the action that spawns a new process fail when no process ID is available or, more elegantly, by imposing a state constraint that bounds the number of executing processes that TLC considers.
Stephan