Storing code other than in the program memory would be troublesome.
However, storing strings like your "jokes" is relatively easy:
- They could be stored in flash, freeing RAM (RAM is much smaller than flash on most microcontrollers.)
- They could be stored on an external EEPROM, FRAM, or Serial Flash chip. There are already libraries that will make this relatively easy. Small chips holding up to about 16MB of data are relatively cheap.
- They could be stored on something like an SD card. I'm not sure of the status of the existing libraries WRT today's "typical" 16-32GB SD card size, but you can usually find older cards in the 64M-2GB range that should work fine.
(larger external storage schemes tend to use a "filesystem" to keep the space organized. Just like your PC.)