The variability is due to timing synchronization and carrier frequency offset (CFO). Timing synchronization becomes much difficult in presence of CFO. When you run the simulation for 10000 frames with CFO set to zero, you can see in the constellation that as timing offset varies, received constellation continuously oscillates between ideal to noisy and vice versa in a cycle. This in presence of CFO is much worse. With-in 10 frames, it still will be in noisy or non-ideal state in which BER could be higher than expected. As there is no error correction in the chain, the variance is also very high. Hence, running for 10 frames or 100 frames does not give a good result. Whereas when you run for 1000 frames or 10000 frames, the result starts to converge.
Hope this helps!