There is no single best tab size, period.
Larger tab sizes means better visual separation, but you'll be using more horizontal screen space. Conversely, smaller tabs reduce visual separation, but allow for more code per line, and produce smaller 'jumps' that could otherwise disturb the reading flow.
Personally, I find that 3 or 4 spaces is the minimum size that produces sufficient visual separation; 4 is a safe bet, 3 works for some fonts, but not all. Others might disagree; some people use 2 spaces and are perfectly happy with it.
If the tab size is too high, visual separation doesn't improve, but the longer jump reduces readability. 8 spaces is probably the maximum that can be read comfortably, and I have never seen anyone use more than that.
So anything between 2 and 8 is fair game. If you work on code that needs deep nesting (say, C++ - a simple inline method with two levels of nested loops in a namespace uses five to six levels of indentation already), you'll want to lean toward smaller indentation; if you have a large monitor and can afford long lines, you may want to go large; etc. Generally speaking, 4 and 8 seems to be the most common choices (probably because programmers like powers of 2), with 4 being more popular than 8. (On a side note, the official Python style according to PEP-8 prescribes 4 spaces).
Just find something that works and use it.