Linguists believe that this very vowel alternation is due to mainly two reasons: Church Slavonic influence and lack of strong stress in Old Russian. (After a bit of thinking we can even claim that actually those two reasons are related, though nevertheless are different.)
In Church Slavonic there was a verb "расти" and noun "растъ". If you look in modern Bulgarian or Serbian and some other Slavonic languages (and some of them historically experienced Church Slavonic influence as well) you'll find exactly this word, "раст".
In Old Russian the root was "рост". But, once again, on early stage of Russian language evolution this difference was not that dramatic. That means that in written form both "а" and "о" root forms had been used. It it not only about рост/раст, for example ровно/равно pair shares the same reasons of existence: first root is Old Russian and second one is Church Slavonic.
Finally, things got even more complicated when in Moscow dialect with it well-known vowel о/а шифт (which is now a pronunciation norm) overcame other dialects.
By the way, there are some other roots with a/o alternation (коснуться/касаться, полагать/положить, плавник/пловец, выскочка/cкакун, творец/тварь etc.). Some of this forms exists because two above-mentioned reasons, some of them share even more complicated and old reasons, having their origins in PIE language, which embraced apophony (i.e. alternation of sounds for indicating grammatical information) pretty much - and this apophonic features hadn't gone without a trace in Russian as well.
A final note: As for the mnemonic rule you've provided, it worth to mention that there are two exclusions: росток, ростовщик and отрасль. As for mentioned in other answer Ростов and Ростислав, it is not that easy, there's no clear evidence that Рост in Ростов is related to slavic root, so this is still disputable.