Обычно всё таки свой gulpfile для каждого сайта - это достаточно удобно, перешёл в директорию, ввёл gulp и всё отлично. Но ничего не мешает сделать разграничения в одном файле.
Первое, что приходит в голову - сделать для каждого сайта свой "большой" таск, в котором вызывать остальные нужные таски. Минусы: для каждого нового сайта нужен будет отдельный таск. Плюсы: изменения в структуре одного сайта (и его таска) не затронут больше ничего
Да, было бы логично положить в site ... Но можно, например, сделать структуру:
-project
--site1
--- .....
--gulpfile.js