Earlier quoted context omitted.
> it allows other classes to depend on an abstraction instead of a concrete class. ... which has exactly zero concrete advantages if there's only one implementation of the class.
A good programmer plans ahead. Edit: of course it is up to individual judgement on a case by case basis, and there are instances were it is obvious that no other concrete implementation of an interface will be required. But otherwise, writing an interface is good practice because it helps safeguard against time consuming future refactoring.
Also, people pretend like refactoring is hard. My experience is that refactoring is only hard on the ends of the spectrum, where someone has added all the wrong abstractions, or no abstractions at all. Of the two, I'd prefer the latter, but obviously anything in the middle is usually better.