The ICS 4.0.4 update solved a lot of issues encountered in the ICS 4.0.3 update. Actually, in some regions, users already got two ICS 4.0.4 update. The first one addressed many issues in ICS 4.0.3 update. The second one improved the stability and improve the performance noticeably.
Random rebooting can also be caused by some poor-written or malicious apps, in addtion to hardware/firmware issue. Occasionally, some widgets may also cause the issue.
During the update, the phone must reboot at least once. If, for some reasons, the update is not successful, you can always re-apply the update.