I’d guess there’s something in the coding for Charm where it simply selects a troop with 1+ adjacent enemies and does Special damage (not reduced by traits) to those adjacent troops based on the Attack of the selected troop, similarly to Queen Ysabelle or Faunessa (although those probably count as Spell damage? Faunesa’s at least).
As such, it wouldn’t be the enemy troops actually doing the damage, despite how we visualise it, but simply (Special) damage from a troop’s spell, which then does get reflected.
Off-topic thoughts on Charm
I’ve always thought it would be interesting if Charm damage actually was affected by traits (and status effects like Enrage) – e.g. Charming an enemy Webspinner would be awesome; Gorgotha would block most of the damage unless the Troop was Enraged, etc.
I actually also think ‘Charm a random enemy’ should be able to select an enemy troop with no adjacents and have no effect as a result; currently it will always select from troops with adjacent units in a X–XX or XX–X situation (and thus always have an effect).
Makes you wonder exactly how much Reflect was able to be tested before being released. Would be really awesome if interactions with existing effects were listed at release!