Con l'aiuto del commento di Feras e qualche giocherellare:
SELECT
u.user_id,
u.user_name,
g.user_group_id,
g.group_name
FROM user u
LEFT JOIN user_group g on JSON_CONTAINS(u.user_groups, CAST(g.user_group_id as JSON), '$')
Sembra funzionare, fammi sapere se c'è un modo migliore.