Можно двумя способами:
Первый, если от юзера нужно сразу получить список ПВЗ. Для этого необходимо в модели User добавить ещё один релейшен на ПВЗ используя релейшен "hasManyThrough". Таким образом, при вызове
$user->pvzs будет возвращена коллекция.
Во втором случае нужно работать как с коллекциями. То есть от юзера получить магазины (shops), а от них пункты выдачи заказов. Если при этом нужен единый список, то получится следующий костыль:
$pvz = collect();
$user->shops->each(function (Shop $shop) use (&$pvz) {
$pvz = $pvz->merge($shop->pvzs);
});
return $pvz->unique('id')->values();
При этом я не уверен что указанный ниже метод сработает правильно:
return $user->pluck('shops.pvzs')->unique('id')->values();