Это необходимо для того, чтобы вы могли обрабатывать коллекцию объектов как один и тот же тип, а затем выполнять некоторые операции над этим типом (вы знаете, что он должен наследоваться от объекта).
Думай об этом как об атрибутах. Это тип метаданных.
Вы также можете захотеть выполнить операцию с известным типом (например, System.Web.UI.Control), но выполнять эту операцию, только если тип наследуется от определенного интерфейса (например, INamingContainer).
foreach(var ctrl in this.Controls)
{
if (ctrl is INamingContainer)
{
// Do something on the control
}
}