Yes, in the case of the Arduino it does exactly that.
But using specific hardware programmers you can reprogram the atmega168 many times also, with the additional benefit of having 2k more space for the program.
Arduino proved though, that the bootloader, the USB to serial chip, the nice set of libraries and the IDE all combined are a winning combination. So the bootloader is THE way to an Arduino is reprogrammed. When the chip starts the bootloader is the first program to run. If data is coming the serial line the bootloader assumes that this data is a new program and stores it on the chip beginning at a specific addres. If no data is comming, then the bootloader is looking if at that specific address there is a program already, and if so - runs it.