Perhaps you can think of it this way. Let's say you have a dataset where there are 100 samples, 90 in class 'A' and 10 in class 'B'. In this very unbalanced design if you do normal randomized groups, you could end up building models on exceedingly few (or EVEN NONE!) from the 'B' class. If you are building a model that is trained on data where there are so few, or even none, of the other class how could you expect it to predict the rarer group effectively? The stratified cross-validation allows for randomization but also makes sure these unbalanced datasets have some of both classes.
To pacify concerns about using stratified CV with more 'balanced' datasets, let's look at an example using R code.
require(mlbench)
require(caret)
require(cvTools)
# using the Sonar dataset (208 samples)
data(Sonar)
# see the distribution of classes are very well balanced
prop.table(table(Sonar$Class))
> prop.table(table(Sonar$Class))
M R
0.5336538 0.4663462
# stratified
# set seed for consistency
# caret::createFolds does stratified folds by default
set.seed(123)
strat <- createFolds(Sonar$Class, k=10)
# non-stratified using cvTools
set.seed(123)
folds <- cvFolds(nrow(Sonar), K=10, type="random")
df <- data.frame(fold = folds$which, index = folds$subsets)
non_strat <- lapply(split(df, df$fold), FUN=function(x) x$index)
# calculate the average class distribution of the folds
strat_dist <- colMeans(do.call("rbind", lapply(strat, FUN = function(x) prop.table(table(Sonar$Class[x])))))
non_strat_dist <- colMeans(do.call("rbind", lapply(non_strat, FUN = function(x) prop.table(table(Sonar$Class[x])))))
strat_dist
> strat_dist
M R
0.5338312 0.4661688
non_strat_dist
> non_strat_dist
M R
0.5328571 0.4671429
As you can see, in a dataset that is well balanced the folds will have a similar distribution by random chance. Therefore stratified CV is simply an assurance measure in these circumstances. However, to address variance you would need to look at the distributions of each fold. In some circumstances (even starting from 50-50) you could have folds that have splits of 30-70 by random chance (you can run the code above and see this actually happending!). This could lead to a worse performing model because it didn't have enough of one class to accurately predict it thereby increasing overall CV variance. This is obviously more important when you have 'limited' samples where you are more likely to have very extreme differences in distribution.
Now with very large datasets, stratification may not be necessary because the folds will be large enough to still likely contain at least a good proportion of the 'rarer' class. However, there is really no computational loss and no real reason to forgo stratification if your samples are unbalanced no matter how much data you have in my personal opinion.