This will be a long answer, so I will divide it in parts.
A significant limitation of the Woods et al paper is that it excludes atomic-basis set calculations where convergence acceleration is much more powerful than in plane wave codes. Namely, the update schemes discussed in the article talk about just the input and output densities, whereas if you can store and diagonalize the Kohn-Sham-Fock matrix, you can formulate much faster converging methods for the solution. Typical quantum chemistry codes extrapolate the Fock matrix, not the density. This method typically achieves convergence in a few dozen iterations.
Which spin state?
As far as I know, some solid-state codes determine the spin state on the fly. If you don't fix the spin multiplicity, this may contribute to convergence problems. A study of convergence problems should be run for a fixed spin state; one can always carry out separate calculations for each spin state.
What is "Kohn-Sham"?
I also have to point out that the notion of "Kohn-Sham calculations" is a bit ill-defined, since typical solid-state calculations are run at a finite temperature; I think this is typically referred to as Mermin-Kohn-Sham theory. Kohn-Sham to me means integer occupations. If you have a finite temperature, you get fractional occupations.
Now, you often get convergence problems when you have solutions of different symmetries close together (which is why atoms and diatomic molecules are often challenging). The reason for the lack of convergence is that the occupations switch between the SCF cycles. In some cases you can even find that LUMO and HOMO swap places when you optimize the orbitals: you find that the LUMO is below the HOMO, you reoptimize the orbitals at this symmetry, and now you realize the new LUMO is below the new HOMO.
But, fractional occupations at the Fermi level are in principle allowed by the Aufbau scheme. Allowing fractional occupations helps in this case, and you get much better convergence.
However, variational minimization of the energy with respect to both the orbitals and the fractional occupation numbers is very hard (which is why AFAIK almost nobody does it).
The alternative is to use a smearing function, e.g. Fermi-Dirac occupations. Also in this case the occupation numbers depend on the orbital energies, which depend on the orbitals, which depend on the occupation numbers. Solving the coupling between these might also make calculations slowly convergent; I am not sure how tightly these are converged in solid state codes.