The system picks very unusual names. For example STOCARDA-KRRABA-SIPLA is in Germany, but doesn't use the German name of the city. (For those wondering, Stocarda means Stuttgart in Venetian according to Wikipedia.) That makes it harder to use for locals and can hurt the feelings of people in some regions. Also using cities of other countries can cause controversial codes, especially for young and or small countries.
3geonames has to use a language for each name. This makes it hard for people who don't speak that language to pronounce the words.
The 3geonames website describes the basic principles but there's no detailed description on how to build those codes besides (a somewhat hard to read) Perl script. For example, the documentation does not explain what encoding is used exactly.