It is hard to pin down exactly what constitutes good English. The English of today is different than what it was a hundred years ago, or even ten years ago. Even talking to my grandma, I find that there are differences between the way I communicate and the way she communicates.
So how did these changes take place? Did a committee get together and decide to make changes? No. Language changes through the way that each one of us uses it. Language truly is a democratic concept. It is only defined through the voice of a community of people.
So if language is simply the compilation of the way it is used, how do you define what is good and what is bad? At one time, "dived" was the grammatically correct way to conjugate "dive" in the past tense. People who used "dove" were ungrammatical, and branded as ignorant. However, as "dove" gained popularity, it somehow passed some magic threshold and became grammatically correct. At that moment, the ignorant people who used "dove" ceased to become ignorant, and became good speakers of English.
How do we determine the magic threshold? Much of it depends on who is using it. For example, English has ALWAYS ended sentences in prepositions. "From whence comest thou?" has always sounded stilted and odd. However, in the Middle Ages, some "smart" people decided that Latin had a better grammar structure than English. Even the most illiterate Spanish speaker will say "De donde eres", or "Of where you are". So they decided since Latin was better, then wanted to implement this into English.
Still, on the books, that is the correct way to speak. Even though every English speaker will say "Where are you from?" it is technically bad English, because some "smart" people in the Middle Ages decided it was so.
However, if some people we as a society like to down on start speaking a certain way, we consider it bad grammar. For example, many African-American dialects have a very sophisticated use of the verb "to be". The sentence "This chili be hot" has a completely different meaning than "This chili is hot." The habitual be, as used in the first sentence, indicates a more permanent condition, meaning that the chili is always hot. More than likely, it means the chili is spicy hot. However, the second be, which is conjugated as is means that the chili is hot right now, and isn't necessarily always hot. More than likely, it means the chili has a hot temperature right now, which may change in the future.
Anglo-English does not make this distinction. It is shallow compared to the depth of expression that is available in African-American dialects. This leads to confusion to speaking. Where in African-American dialects, you can simply respond "She be moody" to emphasize that she typically is not moody, but right now she is being moody. However, in Anglo-English, you might stumble and say "She is moody, well she is actually very nice, but right now she is being moody, not that she is moody normally." It is confusing and linguistically poor compared to African-American dialects.
So why would clumsy construction proposed by elitists in the Middle Ages be preferred over rich linguistic constructions of modern speakers? My guess - linguistic snobbery. Grammar is good for clarity, but sometimes it is often used to create separate classes, and put one people above another people. Italian is a perfect example of this. Venice was a center of the Renaissance, and established their language is the preferred Italian dialect. Now, every bum in Venice speaks perfect Italian, while even the most educated Sicilian struggles with their grammar.
So maybe we should be a bit more pluralistic in our approach of grammar. Identifying one social group that we prefer over another serves to divide and classify people.
In this modern age, where almost anyone can publish anything in any grammar they want, computational linguistics is already learning to parse English the way it is written, and not necessarily the way it is supposed to be written. Grammar is important for clarity, but it is also important for identity.