I think there is a misunderstanding of what gather is for. Gather matches seqables. So you could combine gather with map-of like this.
(m/rewrite {[:a :b 2 :c] 1 [:b :c :d 4 :e] 2}
(m/map-of (m/gather (m/pred keyword? !ks)) _) [!ks ...])
Seems like a rather unlikely thing to be doing. Maybe you were trying to gather up things on a map? Something like this?
(m/rewrite {:a 1 :b 3 "stuff" 5}
{& (m/gather [(m/pred keyword? !k) !v])}
(m/map-of !k !v))
;; => {:a 1 :b 3}