Another is that AMD uses a large number of simple cores, and Nvidia has a smaller number of more complicated cores. The simple cores are all the hash function needs, so AMD can run more operations at once.
http://www.extremetech.com/computing/153467-amd-destroys-nvi...
EDIT: grammar
The reason, more or less, is that AMD GPUs tend to have way more cores than Nvidia GPUs, and their cores can, in hardware, do the integer operation necessary for the hashing algorithm. Nvidia can only emulate the integer operation, so it takes three instructions on Nvidia vs one on AMD.
Apparently AMDs have been declared the winner in terms of work accomplished/resources-consumed ratio.
It has to do with the different architecture allowing more 32-bit operations per second.