I'm not sure that it has ever been documented. I personally classify it as a
bug since it was undesired and inconsistent behaviour, but maybe I shouldn't
call it a bug as it was never documented as such.
Furthermore, after a quick look at the methods with reflector, it seems that
no change was made to the OnSelectedIndexChanged method, although several
other methods have been added, so I'm not sure how this was fixed or even if
it was intentional.
I have seen this, let's call it a feature, mentioned several times by people
converting C# code to VB and finding that the code behaved differently. The
workaround was to check if this was the first change and if so don't process
the method, but a better option is to check whether or not the Control has
been created in the SelectedIndexChanged method.
If you want to process the SelectedIndexChanged code when the control is
first shown then simply call the method in the TabControls HandleCreated
event.
Sorry about any confusion that I may have caused with my assumption that it
had been fixed intentionally, when in fact it may have been accidental.