В тех ситуациях, когда у вас может быть несколько классов с одинаковым набором методов, но при этом с разной реализацией.
Например можно выдумать интерфейс ITextWriter, который будет иметь метод WriteLine.
Можно придумать несколько реализаций такого интерфейса - одна будет писать в консоль, а другая может добавлять строчки в какой-то массив, а третья вообще отправлять в какой-то веб-сервис.