セミコロン以降をコメント扱いされないようにするには \C-\; とすればよい。今回それは不採用だけど。

keyboard-translate は文字(文字コード)のみを引数にとることができる。
つまり、文字コードで表現できるキーしか変換できないということ。
\C-a はすなわちASCII制御文字の ^A のことだから扱えるけど、
対応する制御文字がない \C-; とか、それ以外にも \M-a とかも無理。
そういうときには key-translation-map を使う。
(define-key key-translation-map (kbd "C-;") (kbd "C-c"))