Alguem sabe qual é/são a(s) diferenças?
http://java.sun.com/j2se/1.4.2/docs/api/java/util/NoSuchElementException.html - Thrown by the nextElement method of an Enumeration to indicate that there are no more elements in the enumeration.
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/IndexOutOfBoundsException.html - Thrown to indicate that an index of some sort (such as to an array, to a string, or to a vector) is out of range.
A Diferença é a seguinte.
IndexOutOfBoundsException - Você tem um array e passa um indice fora do range ou seja tem um array de 0-10 e procura pelo indici 11 então é lançada essa exceção.
NoSuchElementException - Você esta faz uma interação e chama o metodo .next() sem fazer a verificação de que existe um próximo elemento então é lançada essa exceção quando não existe um próximo elemento.