Generally the ICSP programmer is a extra cost item so it's cheaper for mass end users if there is a tempory bootstrap that permits loading of new programs via a serial port.
The drawback is that it occupies 2K of memory and if you are tight on code space that can be important.
I have blogged on using AVRDUDE with the standard USB to serial cable that we use to burn a boot loader, no reason it couldn't be used to directly load code as you suggest.
Link to my blog [
exmrclean.blogspot.com]