古いバージョンでは、 | (パイプ) や . (ドット)の記述で <, > がエスケープされていたようですが、新しいバージョン(1.x系?)では、html として出力されるようになりました。
pre.
  &lt;html&gt;
    &lt;head&gt;
      &lt;title&gt;Hello, world!&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
      &lt;h1 class="hello-world"&gt;Hello, world!&lt;/h1&gt;
    &lt;/body&gt;
  &lt;/html&gt;

コレがそのままエスケープされないので、pre 以下は html タグとして出力されます。
pre 以下の場合に何かしている処理があるようなのですが、よくわからなかったので、ひとまず特殊文字をエスケープして出力するフィルタを定義することで解決しました。
カスタムフィルタの定義は jade.filters にフィルタのプロパティを生やすことで、任意のフィルタを定義できます。
gulp-jade のモジュールとしてインストールされる jade を require します。
jade = require('gulp-jade/node_modules/jade');
jade.filters.{任意のフィルタ名変数} = function(block){ ... }

このように定義してみました。(coffeescript です)
require('gulp-jade/node_modules/jade').filters.code = (block)-&gt;
  return block
    .replace(/&/g,'&amp;')
    .replace(/&lt;/g,'&lt;')
    .replace(/&gt;/g,'&gt;')
    .replace(/"/g,'&quot;')
    .replace(/'/g,'&#039;')

使うときはこう。
pre
  :code
    &lt;html&gt;
      &lt;head&gt;
        &lt;title&gt;Hello, world!&lt;/title&gt;
      &lt;/head&gt;
      &lt;body&gt;
        &lt;h1 class="hello-world"&gt;Hello, world!&lt;/h1&gt;
      &lt;/body&gt;
    &lt;/html&gt;

場所は gulpfile のどこか好きな場所に定義してあげればよいです。
grunt-contrib-jade の人も、require(‘grunt-contrib-jade/node_modules/jade’) に jade がインストールされていますので、同様の方法で可能です。

参考リンク