In genere gli stessi warning si avrebbero anche in caso di classe non virtuale pura, se i protopiti delle funzioni virtuali non sono gli stessi.

In questo caso se non ho capito male,

virtual nsresult AAA::funzione(void**) è astratta e tu cerchi di specializzarla con
virtual nsresult BBB::funzione(PRUint32*)

Dal momento che i due prototipi sono diversi, per il compilatore sono due funzioni diverse e quindi la funzione di AAA rimane astratta impedendo l'istanziazione della class BBB.

Nei file che hai postato comunque, le derivazioni delle classi sono diverse.
Così a occhio direi che BBB sia un proxy per AAA