One of the way the Suikoden series handles this problem is by giving recruitable characters various different roles and functions. Of the 108+ characters in a Suikoden game, usually only a fraction consist of main combat characters. Other kinds of character can include shopkeepers, gamblers, minigame operators, commanders for the mass combat system, and information brokers. Since no two of these kind of character typically overlap, these characters are always distinct and useful.
However, there still remain several dozen battle characters that the game designers need to make unique. A lot of this is carried out by giving each character a distinctive appearance and unique weapon. Some characters also come equipped with unique runes (the basis for special attacks and magic powers) that only they can use. However, there are usually still a lot of characters with similar stats and uses to other characters. Particularly in later Suikoden games that allow a lot of customization, many characters end up looking a lot like others.
Radiata Stories tries something a little different. There are 177 recruitable characters in Radiata Stories, and all of them are solely useful for battle. However, the game tries to differentiate them and make them useful by completely doing away with character customization outside of the main character. The player can't change the equipment of any recruitable character, and no character other than the hero can learn new attacks or skills through the player's effort. Furthermore, it is difficult to keep more than a few characters up to level with the main hero at a time. As a result, characters can fall behind and become outdated quickly.
Yet, this is actually a decent solution for having lots of characters. By forcing the player to phase out older characters and recruit newer, more powerful character, the player is much more likely to use a larger fraction of the game's cast. Also, fixing the abilities and attacks of side-characters also gives the designers more room to differentiate them than in a system with lots of customization. However, a lot of the characters fall into clear archetypes and often wear similar uniforms to each other, so quite a few characters end up looking like near-clones of other characters.
While it usually doesn't have as many characters as the two games listed above, the Super Robot Wars series can often have dozens of pilots and mechs to choose from. Each kind of mech has a unique set of attack moves and stats, that while they can be upgraded, their basic parameters are fixed. So, every mech has unique attacks with distinctive, over-the-top animations. Furthermore, pilots are differentiated by their stats, which mechs they can pilot, their unique list of spirit commands, and their theme-music. So, even if the characters often have similar stats, they look and feel very different in play.
My final example is Chrono Cross, which had 40 or so characters. While they all had unique looks, personalities, and even accents, many of them were not differentiated enough mechanically. While there were numerous weapons that different characters used, large categories of character equipped the same weapon. And while every character had three unique special moves, almost all of those attacks were either single target attacks or all enemy attacks. So, there isn't much mechanical variation between characters. The only important mechanical choice to make is choosing what element of character you want to bring along, so it is possible to play through the entire game using only five or so characters.
Hmm, I am beginning to ramble and go off of my point. I think I will get into a more focused discussion of some of these elements in my next post.