Well think about it this way. If alpha>=TBWIN and we return TBWIN then we are telling the rest of the search that TBWIN is an _upperbound_ for this position. This is something we know is wrong.TB wins are pretty exact. Just like a "mate in 10" is an exact score even if one iteration later the position could turn out to be a "mate in 9".
So I believe we should return alpha (if bestValue<TBWIN). It is the best we can do with the information we have.
Well I cannot prove I am right (I don't have the time).
I never said one should switch to fail hard. That would be a waste of valuable information.I think the two approaches will perform very similarly, because (from my point of view) it is simply the difference between fail soft and fail hard.
I gave two specific cases where I believe fail hard is the right thing to do from the point of view of a-b search.