So what happened to the comparative in English so that we have two forms? (with some exceptions) First I shall mention the exceptions. They appear in Latin, such as 'good' which is bonus/bona/bonum but in the comparative is melior/melius and optimus/optima/optimum in the superlative but this also appears in the Germanic languages, like Old English 'good which is god, betera/selra and betst/selest or good, better, and best.
In Latin, one normally converts an adjective to the comparative by adding -ior (m/f) or -ius (n) to the stem of the nominative form, that is the form in which it would be the subject of a sentence without the declined ending for gender and number. In Old English, it would be formed by adding-ra to the stem. However, the Scandinavians who took over the eastern and northern parts of England also contributed to the language and in 1066 the Normans invaded, adding their own contributions to the tongue.
In Old Icelandic, one forms most comparatives by adding -ari to the stem. Like in Old English and Latin, good/better/best is irregular - góðr/betri/beztr or baztr. Comparison is also shown by using en, meaning 'than', or by adding the dative of an adjective like fleiri, more, or the dative of an adjective. In an article, by R.M.W. Dixon, which you can read in pdf here, He called "Comparative Constructions in English", he discusses phonetic forms which take the -er ending or require the addition of 'more' but there are exceptions to just about every case and he did not examine the linguistic origins of the various words which might be useful in determining why this is so. He states that one can use 'stupider' or 'more stupid' although 'stupider' sounds very odd to me so I am going to rule it out as a correct form. He might explain this as a dialectical variance but I have not seen 'stupider' in print anywhere that I can recall. He also states one can use 'solider' for 'solid' or 'more solid' so I wonder if it is disyllablic words ending in 'd' that just don't sound right with an -er ending because 'cold' and 'dead' sound perfectly reasonable as 'colder' or 'deader'. ('deader' may sound illogical but we do have the phrase 'deader than a doornail")
In Comparison in English and German by Markus Schneider and Denis Wippler, they state that trisyllablic words can only take 'more' to form the comparative so perhaps the dividing line is two syllables, some go one way and others go the other way. In the search for the reasons why, there is one more language to consider Old French.
In 1066, the Normans invaded England and French became the language of the court, pushing out much of the Old English or Germanic forms. In Old French: a Concise Handbook by E. Einhorn, it states that comparatives are formed by the addition of the adverbs plus or moins ('more' and 'less') so we can perhaps blame the French for the confusion. However the Normans were Scandinavian in origin (North-men) and so the periphrastic comparative may have come into English from the Old Norse interacting with the French.
One last check with the Oxford English Dictionary reveals that 'stupid' is derived from the latin 'stupidus', solid comes from the latin 'solidus', cold comes from OE 'cald', dead from OE déad. I would hate to conclude that the use of 'more' is due to the Germanic languages having difficulty with the latin derived tongues in disyllablic adjectives ending with a 'd' without making a longer list and checking from which language each adjective is derived from but it is an intriguing possibility. In conclusion, for now, I just want to say that I do not envy anyone trying to learn English as a second language.