Sei andato ad intrufolarti in un roveto

(uno di quelli veramente interessanti però)
Mettendo mano al codice che hai la questione dovrebbe risolversi cambiando la dichiarazione dell'istanza
MotoVeicolo b1 = new MotoVeicolo("AB203BC", 1998, 4000);
in (ad essere precisi precisi)
Veicolo.MotoVeicolo b1 = new Veicolo(null,0,0).new MotoVeicolo("AB203BC", 1998, 4000);
"MotoVeicolo" non è infatti solo un modello di classe estesa ma è (sopratutto) una classe interna e per istanziare una classe interna hai bisogno di un istanza della classe che include quella interna: la stessa cosa la ottieni anche usando "a1" che è già un'istanza della classe "esterna" Veicolo:
Veicolo.MotoVeicolo b1=a1.new MotoVeicolo("AB203BC", 1998, 4000);
Dubito fortemente che l'esercizio che devi fare coinvolgesse queste particolarissime questioni, forse avresti più semplicemente potuto creare tante estensioni di "Veicolo" come classi estese ma esterne, ad esempio:
[in un file MotoVeicolo.java o nello stesso file di Veicolo.java ma al di fuori del corpo della classe]
class MotoVeicolo extends Veicolo {
...blablabla
}
come suggerito da gabriele81
&Ciao.