There may be no need for USB. Many cheap flash RAM ICs are made with I2C and SPI interfaces which are very easy to access with a microcontroller. USB is more difficult to implement, usually a special uC with hardware USB is needed.
Most types of flash disk cards have a SPI interface in addition to the normal card interface. This is easy to access.
A uC usually has some amount of flash RAM, often 256-1k bytes. Most PICs can also write data into the code space on a b-by-block basis, but the code space is not extremely large either.
If you're building a single board computer, the USB interface may be easier.