You often want an image or logo displayed on a monochrome LCD or colour TFT.
If I was Michaelangelo I could draw it freehand in your PC program.
However I prefer to copy an existing professional graphic. Hence my preference to use existing PC Tools to edit, resize, recolour, ... Then create a C array suitable for the Arduino program.
Monochrome bitmaps can fit in AVR Flash memory. Colour Palette bitmaps can just fit in ARM Flash.
Several JPG, GIF, ... images can fit in AVR or ARM Flash. But they take more processing power to decode them.
You can store a massive number of full Colour BMP images on SD card and display with an AVR. You trade off processing power against SD card memory.
Yes, I agree that data arrays should be in C or C++ files. But I am not going to lose any sleep over it.
David.