Вы имеете ввиду, писать $parent в options? Это очень не универсально, так как мы не знаем, будет ли наш select обернут еще в какие либо скоупы внутри шаблона директивы.
Да, если взять шаблон из примера, то можно дописать $parent.colors. Но как только мы добавим ng-if (он создает scope) в шаблон, то нам придется менять «вызов» директивы и писать $parent.$parent.colors.
ScopeC — изолирован (пусть это основной scope директивы).
Любая переменная в ScopeA будет доступна в ScopeB, но не доступна в ScopeC, D и E, так как С изолирована и все ее дочерние скоупы «не видят» выше нее. С помощью $transclude мы можем получить доступ до ScopeB (и, соответственно, до всех его родителей).
Почитал доку. Трансклюженная функция получает scope, унаследованный от родителя. Плохо понятно, что происходит в случае с ng-if. Потестил в коде, при обертывании в ng-if все ок, $parent.colors срабатывает.
Тонкости AngularJS: select внутри шаблона директивы