En realidad Ni.
Veamos...
En principio una clase base abstracta es una clase base que tiene (en general todas pero "por definicion") al menos un metodo Abstracto puro.
Si tiene TODOS los metodos abstractos puros es una interfaz.
Si NO tiene Ningun metodo abstracto puro, no es abstracta, si no que es una clase que usa para esos metodos un late-binding, para permitir la especializacion del metodo en las clases hijas.
Con respecto a los destructores virtuales son utiles solo en caso de que pretendas utilizar a tus clases hijas en base a un puntero de la clase padre:
Base *Puntero = new ClaseHija();
Si ClaseHija no tiene su destructor declarado como virtual (no virtual puro!, OJO) entonces nunca se llama al destructor de la clase padre.
Saludillos gente.
Excelente libro el de Eckel