I read it on the forum somewhere, and recently at that. I'm pretty sure it was a GrimJim post. Since I know he knows at least portion of the code base, I considered his claim pretty authoritative. I tried a lot of google searched, but didn't find anything conclusive either way.
If I said that, it was because I was pretty convinced for a while that there was no interaction between mage specialization and saving throws in vanilla. Grond0's tests made me reconsider and after tonight I'm convinced that the effect is real.
1) Do you think further testing is needed to confirm your hypothesis? (personally, I'd like to see third party verification)
It certainly wouldn't hurt. In case anyone wants to try it, here was the test that led me to my conclusions:
1. Start with a fresh install of non-EE BG2 with no mods.
2. Create a human generalist mage in ToB. Level him up to the max with the console command CLUAConsole:SetCurrentXP(8000000).
3. Give him the Ring of Gaxx with the console command CLUAConsole:CreateItem("ring39") and the Ring of Protection +2 with CLUAConsole:CreateItem("ring07"). Equipping those and the Amulet of the Seldarine should bring his save vs. spells to 1.
4. Have him use one of the oils of speed.
5. Spawn a bunch of umber hulks with CLUAConsole:CreateCreature("udumber").
6. Run around while the hulks spam confusion at you. You should never see a saving throw roll higher than 18 and eventually the mage should get confused.
7. Exit the game and use NearInfinity to change the kit on UDUMBER.CRE to TRUECLASS.
8. Repeat 4-6. This time the mage should not get confused and you should see save rolls of 20.
I also did similar tests involving changing the school of the umber hulk confusion spell.
2) Are your results invariant across the three setups: vanilla, ToBeX, and EE?; 3) There is a bug here, I think we would all agree: Is this a tractable problem, one that could be address in a future JimFix?
It's an issue in vanilla and in the version of TobEx that comes with SCS v30 (beta 0023), but it does not seem to be an issue in the latest version of TobEx (beta 0026). The fix does not seem to be documented either. (I know that beta 0025 added a component named "Saving Throw Fix", but disabling that does not bring back the vanilla behavior.) I don't have EE so I can't test that.
EDIT: After testing some more it still may be an issue in the latest version of TobEx. I'm not sure exactly what's going on.