I realize this is two weeks old but to your question "I would like to know if you can intercept selected tab via JS and then target specific tab instead of resizing all again", you can change your OnClientActiveTabChanged="function(){preLoadFrames();}" to...
OnClientActiveTabChanged="preLoadFrames2"
And add (or replace) "function preLoadFrames2(sender, args) { ... }" with your "preLoadFrames" (inside your script). Now you can access the activeTabIndex by doing "sender.get_activeTabIndex()" inside your preLoadFrames2 function.
Alternativly you can make your own JS GetActiveTab function by adding something like this with your old preLoadFrames function
function GetActiveTabJS() { return ($find('<%=TabContainer1.ClientID%>')).get_activeTabIndex(); }
Using you code I was able to figure out a problem of my own; If you have "ActiveTabIndex=" set in your TabContainer then the inital load of the tabContainer always returns "0" for scrollHeight (using either your method, or if you put the alert(window.document.body.scrollHeight) in the IFrames target HTML body's onload.
Cheers, NB