printf("abc"); と書いたときの"abc"は、
関数の外で const char foo[] = "def"; と定義した文字列と同じ領域に置かれますか?
関数内で、char *bar = "xyz"; とした場合はどうでしょう?
この場合も const char *bar = "xyz"; にすれば、"xyz"; は関数外で書いたのと同じエリアに
取られるでしょうか?

ROM化とかするときに、ROM上にもとられて、それをわざわざRAM上に展開するように
したくないのです。