The main purpose of the GPS spreading codes is to prevent self-interference from the other satellites and to increase the effective bandwidth for the cross ambiguity function (i.e., to get a nice, sharp cross-correlation peak in the time-domain). The pre-spreading data signal is only ~50 bits per second, so spectral efficiency is not a primary concern.