Интерфейсы в Delphi отвечают за две малосвязанных вещи.
1. Множественное наследование. Об этом уже рассказали до меня, повторяться не буду.
2. Подсчёт ссылок (для этого реализатор должен корректно поддерживать _AddRef и _Release, но это уже другой вопрос, и подходящая реализация есть в TInterfacedObject).
Связано это с тем, что Delphi должен был поддерживать Microsoft COM, а там автоматическое управление через подсчёт ссылок.
Так что интерфейсы часто приплетают только потому, что удобно работать с подсчётом ссылок.
Вот, например, моя библиотека (обёртка cURL для Delphi) под названием curl4delphi:
https://github.com/Mercury13/curl4delphi
На что тут ICurl? А на то, что это объект с подсчётом ссылок, и для него не надо вызывать деструктор. Пропадает последняя ссылка — объект исчезает. Вот и всё.
Из-за автодеструкторов, «киллер-фичи» Си++, я в Си++ так не поступал бы.