I have a similar situations.
We have mostly mobile users so shutting machines down at night at a certain time doesn't work well. What I have done is created a maintenance window that starts an hour before the end of the day. This way the updates gets pushed out, but the users aren't forced to reboot during the middle of their days.
Any machines that get left on will be rebooted as required by the updates, and any machine that get missed will hit the wall and will be forced.when they hit the deadline.