Perché è buona norma farlo. Se una classe Base non definisce il distruttore virtual, non verranno richiamati i distruttori delle classi derivate ma solo quello della classe Base con tutte le conseguenze del caso.
http://www.emagsoftware.it/faqcpp.htm#19