En examinant le code de Random.java
(dans le jdk 8), il y a deux déclarations qui ressortent.
* The algorithm is slightly tricky. It rejects values that would result
* in an uneven distribution (due to the fact that 2^31 is not divisible
* by n). The probability of a value being rejected depends on n.
y
* Linear congruential pseudo-random number generators such as the one
* implemented by this class are known to have short periods in the
* sequence of values of their low-order bits.
Sans être un expert en génération de nombres aléatoires (on parle de pseudo génération de nombres aléatoires), il semble évident que l'algorithme essaie de mieux retourner des nombres "aléatoires" que si l'on fait simplement next() % bound
en termes d'aléa (et éventuellement d'efficacité).
Il y a aussi le facteur de commodité, mais cela ne semble pas être la raison principale, étant donné les commentaires dans le code.