Tralasciando il fatto che per quanto riguarda Javascript dipende dall'implementazione del browser, se utilizzi una tecnologia lato client esponi la soluzione ad attacchi da parte dell'utente mentre utilizzando una soluzione lato server non hai questo problema.

Inoltre PHP include mt_rand() per risultati migliori rispetto a rand() e, se è il caso, puoi sempre implementare un altro algoritmo.