When to use cross spectral density versus cross correlation?
The cross-spectral density is in the frequency domain while the cross-correlation function is in the time domain. The two are Fourier Transform pairs, the FT of the cross correlation function is the cross-spectral density.  The the two provide the same information, just that one is in the time domain and the other is in the frequency domain.
This is just as the relationship between the auto-correlation function and power spectral density (power spectrum) for a signal which are also related as Fourier Transform pairs (as given by the Wiener- Khinchin theorem).
One common application of the cross-spectral density is finding the transfer function in a noisy system. We can cross correlate the input and output and assuming the signal is correlated but the noise is not (between input and output) we can optimally estimate the magnitude and phase response of the system.
One common application for cross-corrrelation is receiving GPS signals which at the antenna are up to 20 dB below the system noise floor! We cross correlate the extremely noisy signal received to the known pseudo-random noise sequences transmitted by the satellite and once correlated can extract the data messages and determine range to the satellites (and ultimately our position and time by triangulating on many satellites).
What you may also see is that we can do either approach in time or frequency- in the GPS example you can do the cross correlation I describe with FFT's given the relationship:
$$R_{xy}(\tau) = \text{ifft}(\text{fft}(x)\text{fft}^*(y))$$
Where:
$R_{xy}(\tau)$: Circular cross-correlation function.
$\text{fft}(x)$: The DFT of x. 
$\text{fft}^*(y)$: The complex conjugate of the DFT of y.
$\text{ifft()}$: The inverse DFT
For an example with regards to GPS acquisition, see this MATLAB code I have posted on Mathwork's file exchange site.