Você está tendo problemas com a idempotência porque está usando keysym em vez de keycode . Pense em keycode como sendo uma atribuição de uma chave a uma função, enquanto keysym é apenas um link de um nome de função para uma função real.
Quando você usa o keysym da seguinte forma:
keysym Caps_Lock = Multi_key
você essencialmente exclui o nome Caps_Lock . Portanto, da próxima vez que você executar xmodmap e referenciar Caps_Lock nessa mesma linha, ficará confuso.
A maneira correta de fazer isso é reatribuir o código de tecla diretamente da seguinte maneira:
keycode 66 = Multi_key
Você pode obter o código-chave do comando xev , por exemplo.