Eager load je malo drugacija stvar, napravi odvojen upit i pokupi sve podatke koji su u relaciji, ne pravi join.
Ja sam ovo resio ovako jer mislim da ne postoji automatski nacin da se pretrazi po pivot tabeli (a bilo bi logicno da ima):
Kôd:
$tag_ids = $product->tags()->lists('id');
$related = Product::join('product_tag', 'products.id', '=', 'product_id')->where('id', '!=', $id)->whereIn('tag_id', $tag_ids)->get();