Пожалуй, посоветую следующее:
1) Иметь хелперы в jade, переменную с названием блока типа b, гененрацию модификатора типа mod(b, 'name', 'val'), переменную content (у меня это объект с toString()) с содержимым блока, и т.п.
2) Не использовать include вообще, чтобы можно было строить дерево, просчитывать в рилтайме зависимости, и даже собирать assets для страницы. Например, через какието хелперы, опять же. При большом делении на блоки все повиснет, конечно, но надо научиться их умно кешировать.
3) На вход постарайтесь подавать bemjson-like структуру с доработками под себя. У нас в проекте сейчас это поле data, в которое кладутся любые данные, нужные для блока. Подтягивание внутренних блоков (и их последующую отрисовку) мы делаем либо в самих шаблонах, либо из объекта content, если контент состоит из массива блоков и строк.
4) Если нужно будет где-то подтянуть блок в элемент — научите хелперы block/element из (2) подмешивать данные при прямом вызове хелпера.
5) Если все замечательно — в конце все собранные assets можно в заголовке (css) и в подвале (js) страницы, предварительно прогнав через uglifyjs, csso, но только на продакшне, где есть их кеширование на nginx.
У нас это все на пхп со смарти (так звезды сложились), но вполне подойдет для рантайм js с jade. Работает замечательно.
Но вообще, если вы используете js, то удобнее использовать bemhtml свежий с js синтаксисом. На bem.info пока не обновляли доку, но базовые блоки в самой библиотеке вполне описывают синтаксис. Будет бонус — шаблоны самодостаточны, и на морде не потребуют подгрузки доп. библиотек, можно будет запускать как есть. В гульп их сборку встроить тоже можно.