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 ', ')