Using Bayes theorem, we can write the posterior probability of class membership as:
$P(C|x) = \frac{P(x|C)P(C)}{P(x)}$
The posterior probability of class membership is the ideal information we need for a classification task - if we know that accurately, we can find the Bayes optimal decision rule that minimises the error rate.
Now if we balance the dataset with up- or down-sampling the data, or worse still use e.g. SMOTE, then we are throwing away $P(C)$, which is part of the optimal Bayes decision rule. So why on Earth would we want to do that? The "skew" is useful information!
Now if there is a big imbalance, then we often get a classifier where the optimal Bayes classifier (assuming false-positives and false-negatives are equally bad) assigns ALL patterns to the majority class. The first thing to realise is that if that assumption is correct (i.e. accuracy is a useful metric for your problem), then you don't need to worry about it, that is the optimal solution.
However, in a lot of cases, the misclassification costs are not equal, e.g. for a medical screening problem, telling someone they don't have a serious illness when they actually do is a much worse error than telling them they are ill when they are not. We can build these misclassification costs into the decision rule ("cost-sensitive learning"). Often problems with an imbalance have unequal misclassification costs, but for some reason practitioners obsess about the imbalance rather than finding out what the misclassification costs are and building them in to the model.
Essentially the key is to work out what is important for your application, and use that information in choosing the performance metric and in building the decision rule.
Now if you have a very small dataset, then imbalance can sometimes result in an undue bias against the minority class, however when that happens there is very little you can really do to fix it other than gather more data (as the problem is that we don't have enough data from the minority class to properly characterise its distribution).
Another issue is that the class frequencies in the training data are different from those in operational use. However, that is a separate problem, which I address in my answer to a related question here.