The S7-300 series has a wide range of CPU sizes/speeds to suit most needs and is more commonly used. Would recommend this for most applications.
The S7-400 series is more powerful and used for a much larger system, it is used in crucial environments, for example you can hot swap cards etc. The S7-400 can be an expensive overkill if used unnecessary.