Técnicamente, las diferencias no son realmente significativas pero, conceptualmente, son cosas completamente diferentes y eso conduce a las diferencias técnicas que otros han mencionado.
Una superclase abstracta es exactamente lo que parece, es un tipo común que es compartido por muchos otros tipos, como los gatos y los perros son animales.
Una interfaz también es exactamente lo que parece, es una interfaz a través de la cual otras clases pueden comunicarse con el objeto. Si desea hacer una caminata de gato, está bien, porque Cat implementa una interfaz CanWalk. Lo mismo para un lagarto, aunque caminan de manera muy diferente. Una serpiente, por otro lado, no implementa CanWalk, por lo que no puede decirle que camine. Mientras tanto, Lizard y Snake (o posiblemente subclases más explícitas, no soy un experto) podrían deshacerse de su piel y, por lo tanto, implementar CanShed, mientras que un gato no podría hacer eso.
Pero todos siguen siendo animales y tienen algunas propiedades comunes, como si están vivos o muertos.
Es por eso que todos los métodos en una interfaz deben implementarse como públicos (o explícitamente, en C #). ¿Porque cuál es el punto en una interfaz que está oculta de la clase que interactúa con el objeto? También es la razón por la que puede tener múltiples interfaces para un objeto, incluso cuando un idioma no admite herencia múltiple.
Para volver a su pregunta, cuando la mira de esta manera, rara vez hay una razón para tener una superclase completamente abstracta.