Complementando o artigo.
Quando você de fato começa a fazer testes unitários da sua aplicação (principalmente unitários), você entenderá a importância de interfaces, uma vez que elas são essenciais para realizar mocks.
Sobre a frase "não há o que garanta que essas classes tenham qualquer relação uma com a outra", eu não concordo. Se temos a seguinte interface:
public interface IConverter<T1, T2>
{
public T2 Convert(T1 value);
}
Qualquer classe que implemente essa interface será uma classe que sabe converter um tipo T1 em um tipo T2. Dessa forma, já relação entre elas.
A proposta dessas duas entidades (interface e classe abstrata) são muito diferentes, e caso quem leu o artigo ainda não tenha entendido, é super importante procurar mais informações (como no curso sugerido), para não fazer besteira.