ちょうどいい。そのうち書こうと思っていた。
もっとも単純な(?)使い方は、複数レンジを同時にfor eachすることだと思う。
#include <iostream>
#include <boost/foreach.hpp>
#include <pstade/oven/zipped.hpp>
int main() {
  using namespace pstade::oven;
  int const a[] = {1, 2, 3};
  long const b[] = {2, 4, 6};
  typedef boost::tuple<int, long> my_tupple_t;
  BOOST_FOREACH(my_tupple_t const& e, boost::make_tuple(a, b) | zipped) {
    std::cout << boost::get<0>(e) + boost::get<1>(e) << std::endl;
  }
  for (std::size_t i = 0; i < sizeof a / sizeof a[0]; ++i) {
    std::cout << a[i] + b[i] << std::endl;
  }
}
上のBOOST_FOREACHと下のforで同じことをやっている。
普通、同時に複数のレンジのfor eachはできないが、要素をtupleでまとめることでそれを実現している(eのこと)。
レンジを渡す側も、tupleで1つにまとめることで、複数のレンジを1つの | へ渡すことを可能にしている。

for eachだとあまり有難みは無いが、アルゴリズム関数で複数個のレンジまたはイテレータを渡せるようになるのが嬉しい。
例えば、STL <algorithm>のtransformは入力イテレータ1つのと2つのしかないが、
そんな用意がなくともzippedで束ねればいくつでも渡せるという具合。