Yeah, the CR +1 rule tends to break down on anything with the "AWESOME" tag (dragons, most outsiders), puzzle monsters (trolls, hydras, pixies), but tended to work well with more straitforward monsters. (Bugbear at 3rd level, Ogres at 4th, etc.)
Hmm... I use a CR+0 to 3 rule, using both the type of RHD the monster would give as well as general awesome (or not) of the monster, AND the all-important THUMB, to gauge how many HD the critter should get.
Also, there is a rough gauge like this: Per HD, a critter can get 6 points of ability bonus or natural armour AND one minor ability, or fewer ability points and a major ability. This works out quite well. Rule of thumb still applies. So for a first rough gauge, divide the number of net ability boosts by 6 and sort the other abilities, then assign HD. If the result is somehow weird, either change the point-buy, or add/remove another HD. OR add/subtract an ability.... then season to taste.
That way, for instance, you don't get FULL-casting critters WITH ability boosts anymore, since the player would always have to add a few HD.
For example, in my system the Aranea had 5HD/4th level sorc casting, the Lammasu 9HD, 7th level Cleric casting (albeit I DID allow domains). But these were more ad-libbed than anything else.
I also added that the CL for SLAs is always your HD, it can't be higher, and you can't cast SLAs or spells you don't meet the level requirements for (as in, usually Wizard or Cleric level required to cast the spell.). That helps, sometimes.