I have figured it out after some painful waste of time. (I figured out I was being stupid, see Erich's post below)
In global space, const char myArray[] = "Hello World" will be placed in RAM. You can see this by its address when debugging and using the Expressions window to view its location. You will see this location switch from RAM to ROM/FLASH once you add __inline. However, you must initialize it. For example: __inline const char Test[10]={}; will go into ROM but __inline const char Test[10]; will go into RAM.
Furthermore, if you wish to write to a variable in global space stored in ROM/FLASH, it must be in its own sector else you will create an exception once you attempt to write to it (because once a flash erase is performed, it will erase the data along with program code). The sector size on kinetis MCUs is 0x400 or 1024 or 1kB. Consequently, you must ensure your variable is sector aligned and takes up an entire sector. To do this you must use the align attribute. For example:
__attribute__ ((aligned(0x400)))
const myArray[0x400]={};
In my application, this data was stored at 0x8C00 which is indeed divisible by 0x400 or 1024 which is proof that the alignment was a success. Also, if you look at the datasheet you will see that 0x8C00 is within program space.
You can now use the PE component IntFlashLdd to write to this sector during program time. Or you can write to it using your own Flash driver for the Kinetis MCUs.
Look Mom, no linker file modification required!
Edit: Tried it again today and "const char myArray[] = "Hello World" " was in flash. Must have been missing something. Anyhow, atleast what I said about alignment and initialization appears to be repeatable.