I think the Blazor documentation article that I linked explains it very well. It contains an example which uses both Expanded property and private In short Blazor renders components upon change and set the parameter properties. If the component keeps the state it gets overwritten. This bit us hard in the early days. Hence there is Selected and IsSelected.
Basically you use either SelectedIndex or the Selected property of a tab (but not both) to set the selected tab (setting Selected overrides SelectedIndex). To get the selected index you either use @bind-SelectedIndex or check the IsSelected of the tab.