Sonic: Suitable for almost any mode. He's a great choice for match, tag, and ctf, as he's fast enough to evade attacks. Constant thokking with him in most races and circuits make him an instant win. His only flaw is his lack of aerial travel. 9/10
Tails: Slowest, thus a terrible choice for races. His flight helps when you want snipe someone in ringslinger, but other Rail Ring experts can easily consider him a sitting duck, due to his lack of air maneuverability. However, he can easily take the lead in many of the Mystic Realm courses (including one of the circuit ones), since most of them ascend in height. Plus, carrying the flag capturer to a safe spot is an excellent factor of a CTF plan, and he's a great choice for tag (though I normally end up preferring Sonic anyways). 8/10
Knuckles: Meh. He's average in all of the modes. He can reach places that Tails can't, but I can't guarantee you'll win a race contest with him. His climbing ability is too slow not to be caught by a ringslinger, and there's always a better character for CTF. His best trait is ability to gain speed while gliding; it makes him hard to hit in match. Really, though, he's just Madison in the middle. He's never the best, and he's never the worst. 7/10
So, yeah. My favorite choice is Sonic, but when need be, I'll switch to Tails for a level or two. Knuckles doesn't seem to fit anywhere to me unless I'm just testplaying or goofing off.