I can reproduce your examples and I think your analysis is right.
When I type <C-G>ugv
from (insert) visual mode, I get the expected results: <C-G>
switches to (insert) select mode, ugv
replaces the selection with those characters. A mapping should behave in the same way.
I guess this is a bug; the entire (insert) submode is quite special, not frequently used, and therefore prone to bugs. You could delve into the source code yourself, or raise this issue on the vim_dev mailing list. Due to the obscurity of the issue, it may be hard to garner much interest from the devs, though.