Regardless of power, I would have some objections to this class in practice.
Player access to monster abilities
Firstly, there is the fact that it depends on controlling monstrous creatures. There are some decent limitations on this, but the fact is that getting access to monsters’ abilities is one of the quickest ways to break 3.5, because for the most part Wizards’ creature designers didn’t give much if any thought to how creatures’ abilities would cause problems if controlled by PCs. The open-ended nature of the Pokémaster, allowing him to capture any creature with the appropriate Types and below a certain CR, is ripe for abuse.
This becomes much less of a problem, however, if you either carefully consider which creatures you risk letting the Pokémaster have a chance to catch, or if you simply trust the player and make clear that you may at times bar him from catching certain creatures or from using certain abilities of the creatures he’s caught. But to me that introduces a lot of headaches that I don’t think a DM needs: in addition to carefully designing any encounters that comes up, he’s got the added problem of worrying about what happens if the Pokémaster catches one of them.
Reliance on the unreliable CR system
The second thing that worries me is that catching a creature is based on CR, which is awkward for a number of reasons. First of all, it’s extremely “metagame” information; the only official rules that involve a player referencing creatures’ CR is the Truenamer from Tome of Magic – almost unanimously agreed to be the worst-designed class in 3.5. (but, full disclosure: the fact that the Truenamer relies on CR is almost incidental to its poor design, after you consider all the other problems with it)
Ultimately, the CR system is ridiculously inconsistent, with creatures that supposedly have the same CR sometimes having wildly different power and actual threat levels. It doesn’t seem solid enough to me to be used for this purpose, even though this is exactly the kind of thing it should (if CRs were more accurate) be great for.
As a houserule, I’d probably just replace this with DM fiat, honestly, and I’d tell my player that up-front. I’d let him have most things, but things that have too high HD, too high CR, or too problematic abilities (see my first point) would not get captured. This would actually largely fix the class, but you have to make this clear to the player, and he has to be on board with that. With a DM who is a friend of mine and I trust, I’d be fine with that as a player. With a DM I don’t know, I’d accept that – and find a different class.
XP Time Bombs
The third thing that worries me is the large XP cost if a Pokémon dies. This turns their only class feature into walking time bombs. I don’t particularly like XP costs for this kind of thing (also seen in Familiars etc): supposedly the XP cost is due to the emotional loss of the pet dying, but you don’t see similar XP loss when NPCs die – even if they’re parents, lovers, or children. It just doesn’t seem appropriate to me. But anyway, this particular problem is pretty easy to deal with: just houserule those penalties out.
Personally, I would say something like this to the player:
You can provisionally take the class, but whether or not you catch a particular creature is going to be basically be determined by me on a case-by-case basis, more-or-less by straight DM fiat. Furthermore, I might let you catch a creature but not let you use all of its abilities, and finally I reserve the right ask you to release a creature if we figure out through play that it’s causing problems.
If you still want to play the class under these conditions, you are welcome to and I look forward to see how you fit the character into our setting. For what it’s worth, I promise I’m not actively looking to screw you on this, I just want to be clear that I am not very comfortable with you being able to get access to the special abilities of a monster just because it has the right type and was happened to be given a CR below your level.
But we will be waiving the XP penalties on Pokémon death, so you’ve got that going for you.