GROUP BY 句を追加するとクエリの結果が変わる理由を説明してください。他のすべては同じままで、GROUP BY 句を削除すると、GROUP BY 句を追加した場合とは異なる結果が生成されます。
GROUP BY は、カウントを変更するのではなく、単にフィールドごとに結果をグループ化するように思えます。
データを table2.name で整理し、それぞれの数を取得する必要があります
SELECT table2.name, COUNT(DISTINCT(op.id))
FROM op INNER JOIN table1 ON table1.EID = op.ID
INNER JOIN table3 ON table3.id = table1.jobid
INNER JOIN table2 ON table2.id = table3.CatID
WHERE op.ActiveStartDate <= NOW()
AND op.ActiveEndDate >= NOW()
GROUP BY table2.name
ORDER BY COUNT(*) DESC;