It is certainly more general, but it feels like putting multiple distinct responsibilities
(segmenting text and processing on each segmented item) and can be awkward
to use.
Especially, the cluster splitter as specified in UAX#29 requires lookahead
and such splitter could be implemented more efficiently if we allow keeping states,
but allowing only Text -> (a, Text) type procedure excludes such internal state.
Clustering algorithm can be provided as generators (e.g. Text -> (() -> Grapheme) or
Text -> (() -> Word), etc.). Such generators can be combined with generator
mapping operators freely, and covers use cases of the proposed generalized
text-map etc. (The only cases it can't cover is when you want to switch granularity
as you consume input. I assume it's rather rare case, though.)
Cf. Gauche employs generator-base approach for clustering: