Gulp по своей сути - это таск-раннер. Он не умеет ничего, кроме как запускать таски. Он может запускать их последовательно или параллельно, может передавать поток данных от одной таски в другую, может эти данные записать в файл. На этом его возможности заканчиваются. Больше он ничего не умеет. Та функциональность, которую от предоставляет, позволяет удобно организовать большое количество небольших программ, которые могут быть нужны при сборке или деплое проекта, но сами программы его не касаются. Ему сказали запустить - он запускает, не более того.
Дальше мы уже можем делать программы, таски, под свои задачи, в том числе дополняя их плагинами для Gulp, которые по сути своей - такие же независимые программы, просто соответствующие определенным соглашениям о том, как работать с вводом-выводом данных.