Можно через массивы сделать:
SELECT
"deviceId"
FROM
devices_categories
GROUP BY
"deviceId"
HAVING
array_agg("catId") @> (
SELECT
array_agg("categoryId")
FROM
object_categories
WHERE "objectId" = $1);
Кроме этого, если сделать вместо (или в дополнение к) devices_categories массив catIds в таблице device'ов, то можно будет построить по нему GIN индекс и такой запрос будет очень быстро выполняться.