quali altri linguaggi lo fanno? di quelli che conosco io, ad oggetti, non so di classi derivate che eliminano metodi della superclasse. Poi non ne vedo nemmeno la ragione. Se un metodo è consigliabile che non venga usato viene dichiarato deprecato, ma non puoi di punto in bianco modificare una interfaccia pubblica solo per avere maggiore ordine!!
Resta anche una questione di retro-compatibilità: ciò che eseguivi con codice compilato java 1.4 devi poter continuare ad eseguirlo anche con java 7 (il viceversa ovviamente non è vero), è impensabile che ad un certo punto dici bon, voglio ordine sta classe ha 10 metodi in meno!!!!
Ti ripeto, il massimo che si fa (rischiando) è svuotare il metodo (non fargli fare niente), ma non eliminarlo. Poi che faresti coi metodi final?
Poi, in realtà se la gerarchia è fatta bene, situazioni in cui all'ultima classe figlia si ritrovino dei metodi inutili non se ne trovano (e quello che hai detto tu è tutt'altro che inutile).
Farlo farebbe venire meno il concetto di ereditarietà, allora usa la composizione (e usi quello che ti pare di una classe)
Riguardo ai parametri di default: modi di lavorare, personalmente trovo molto più utile un controllo sul numero dei parametri e sul tipo fatto dal compilatore in fase di compilazione (pena overloading dei metodi) che una situazione in cui hai valori di default e/o numero variabile di parametri. E' anche una situazione di maggiore ordine, visto che a te piace tanto. Se sei un attimo bravo e attento di codice non ne riscrivi, anzi sfrutti all'infinito un metodo che funziona bene.