Grazie per le domande, cerco di risponderti nel modo più chiaro possibile.

1) Mi spiego con un esempio:
Array 1: pere,banane,mele,arance
Array 2: carote,sedano,cipolle,rape,patate,finocchi
Array 3: sale,pepe,curry

Esempio di risultato con 3 gruppi:
Gruppo 1: pere,banane,carote,sedano,sale (5 elementi)
Gruppo 2: mele,cipolle,rape,pepe (4 elementi)
Gruppo 3: arance,patate,finocchi,curry (4 elementi)

Esempio di risultato con 4 gruppi:
Gruppo 1: pere,carote,sedano,sale (4 elementi)
Gruppo 2: mele,cipolle,pepe (3 elementi)
Gruppo 3: arance,patate,curry (3 elementi)
Gruppo 4: banane,rape,finocchi (3 elementi)

2) Gli elementi di un singolo array che produco da una textarea non viene mescolato con gli elementi degli altri due, ma viene mescolato al suo interno, in modo tale che l'ordine con cui l'utente lo inserisce venga randomizzato al clic; questo mi serve perché poi da ogni singolo array così ottenuto pesco un certo numero di elementi che vanno distribuiti nei diversi gruppi, in modo che venga fuori un risultato analogo a quello che ho scritto nel punto 1.

3) Sì, le lunghezze possono essere diverse;

4) Questo è il punto più difficile: le lunghezze necessariamente devono essere diverse, ma avereuna differenza massima di una unità.