Acho que é isso que você está procurando usando
GROUP_CONCAT :SELECT
source.product,
GROUP_CONCAT(cat.category) cats
FROM cat
JOIN source on source.product = cat.product
GROUP BY source.product
Demonstração do SQL Fiddle
Se você está tentando obter um ', ' entre cada categoria, use
SEPARATOR com GROUP_CONCAT . Por exemplo:GROUP_CONCAT(cat.category separator ', ')