I think the problem is due to Sense (and other launchers) loading up and trying to render the icons before the SD card is fully mounted.
I use ADWLauncher EX and it experiences the same icon issue. Apps on SD go generic after a reboot... but if I wait a bit (for the SD card to fully mount), with ADWLauncher, I can hit Menu--> ADW Settings--> Restart ADW, and that will get ADWLauncher to reload the icons. Then all is well.
As was stated, if you force close Sense, after waiting a bit for the SD card to fully mount, you can get the icons to reload.
I think this is a Gingerbread issue, because my EVO 4G did the same thing after its Gingerbread update, and now my EVO 3D has the same issue. Google could fix this by delaying the loading of the launcher until after the SD card is fully mounted.
Something else to ponder: I use a 32GB card. I'm not sure if others that are experiencing this are also using higher-capacity cards, but perhaps the additional size requires more time to fully mount. If so, maybe when HTC/Google/Sprint did their testing of the EVO 4G upgrade and the EVO 3D ROM, they may have only tested using an 8GB card (which may require less time to mount).
Is this happening for folks using the fast boot option? I just tried it and it didn't give me generic icons after shutting down with fast boot enabled.
Anyone experiencing the generic icons after a reboot with the included 8GB card?