You need to understand what variance is specifically, the coefficient of variation. If you look at the entire network as a whole or just imagine there is only one miner in the entire network, that miner is expected to find 144 blocks a day. Now, what is the chance that they find only half the blocks or 72 blocks a day? a simple CDF[Erlang] would give you the result; it's approximately 1 in 11963147 events or 0.00008% or once in 32,800 years. In plain English, that's
almost impossible.
Now take a small miner that is expected to find 2 blocks a day; how likely is he expected to find half that, i.e., 1 block only? That's a 39% chance, which in plain English is VERY POSSIBLE.
Long story short, the less a pool is expected to find blocks, the higher the variance they should expect. Obviously variance goes both ways; the small miner with 1 expected block has a 10% chance of hitting double the number, whereas the large miner with 10 expected blocks has only a 0.01 chance of hitting double that.
By the end of the day, it all doesn't matter in the long run; all pools will pay equally - fees.
Below is a simple Python code that you can run and tweak as you like.
import math
from scipy.stats import gamma
def mining_luck(expected_blocks, actual_blocks):
luck_percent = (actual_blocks / expected_blocks) * 100
sigma = (actual_blocks - expected_blocks) / math.sqrt(expected_blocks)
scale = expected_blocks / actual_blocks
probability = gamma.cdf(actual_blocks, a=actual_blocks, scale=scale)
print("Expected blocks:", expected_blocks)
print("Actual blocks:", actual_blocks)
print(f"Luck: {luck_percent:.2f}%")
print(f"Sigma deviation: {sigma:.2f}σ")
print(f"Probability of this or worse: {probability:.8f}")
print(f"Approx 1 in {1/probability:.0f} events")
# Example
mining_luck(144, 72)