hyperref documentation says: "Make sure it comes last of your loaded packages". The reason is that it redefines many LaTeX commands. It's a rule of thumb that helps to avoid errors.
However, there are exceptions, for instance the
amsrefs user's guide notes that
amsrefs has to be loaded after
To avoid problems when adding hypertext functionality: do you know further such exceptions?