Tecnicamente, as diferenças não são realmente significativas, mas, conceitualmente, são coisas totalmente diferentes e isso leva às diferenças técnicas que outros mencionaram.
Uma superclasse abstrata é exatamente o que parece, é um tipo comum que é compartilhado por muitos outros tipos, como Gatos e Cães são Animais.
Uma interface também é exatamente o que parece, é uma interface através da qual outras classes podem se comunicar com o objeto. Se você deseja fazer uma Cat Walk, está bem, porque a Cat implementa uma interface CanWalk. O mesmo para um lagarto, embora eles andem de maneira muito diferente. Um Snake, por outro lado, não implementa o CanWalk, portanto você não pode dizer para Andar. Enquanto isso, Lizard e Snake (ou subclasses possivelmente mais explícitas - eu não sou especialista) podem perder a pele e, assim, implementar o CanShed, enquanto um gato não pode fazer isso.
Mas eles ainda são animais e têm propriedades comuns, como vivos ou mortos.
É por isso que todos os métodos em uma interface devem ser implementados como públicos (ou explicitamente, em C #). Porque qual é o ponto em uma interface que está oculta da classe que faz interface com o objeto? É também por isso que você pode ter várias interfaces para um objeto, mesmo quando um idioma não suporta herança múltipla.
Voltando à sua pergunta, quando você a vê dessa maneira, raramente há uma razão para ter uma superclasse inteiramente abstrata.