Respostas:
A maior diferença é que a maioria dos sistemas de entrada é implementada no servidor, o uim é apenas uma biblioteca.
A maioria dos usuários não precisa de um sistema de método de entrada ou precisa apenas de conversores simples baseados em tabela. Esses usuários não precisam ou não desejam instalar um sistema complexo de métodos de entrada, portanto, queremos manter o uim simples.
Veja a página oficial do Github para mais esclarecimentos.
O Uim é uma biblioteca de módulos de métodos de entrada que suporta vários scripts e pode atuar como um front end para vários métodos de entrada, incluindo anthy, canna, prime ou skk (para japonês), pinyin (para chinês), byeoru (para coreano) e m17n (para muitos outros idiomas). a maioria de suas funções é implementada em esquema, por isso é muito simples e flexível. Fonte
Agora, e o XIM? O XIM é um protocolo de método de entrada bastante obsoleto, que o ibus e o fcitx implementam apenas por motivos de suporte legado. Não há nenhuma razão real para você querer usar o XIM hoje em dia sobre qualquer um desses dois. A única razão pela qual você deseja definir GTK_IM_MODULE = "xim" é substituir as configurações ComposeKey codificadas do GTK. Fonte