Concettualmente quel codice e` un po` "sporco". Se passi un array piu` grande del necessario il programma non funziona!
Non ha molto senso..
Piuttosto - accusando la limitatezza di Java in questo caso - l`array fusione lo allocherei dentro la funzione e lo restituirei come risultato. Ti indico il prototipo, rifalla cosi`:
codice:
static int[] fondi( int[] uno, int[] due )
E in main() la utilizzerai cosi`:
codice:
public static void main(String[]args)
{
int[] primo = {3,4,21,45,67,89,98,123};
int[] sec = {0,3,13,34,56,234};
int[] fusione = fondi(primo, sec);
for (int i = 0; i < fusione.length; i++)
System.out.print(fusione[i] + "\t");
}
Cosi` l`utente non dovra` preoccuparsi assolutamente dell`allocazione e non ti ritroverai a combattere con l`errore di prima. 
Ciao.