Almost anything you can do within a iRule (like LB::down) would be undone by the next successful Health Check against the node that you were wanting to remove from the pool.
You have a few options:
1. Log into the LTM prior to the restart and disable the node manually (However, any connected users would persist to the server unless you disabled the node and allowed enough time for all connected users to complete their current sessions and disconnect normally).
2. Don't disable anything. Just run your maintenance (the server stops responding during the restart, fails the health check and the LTM marks the node as Failed during your maintenance). You have the additional option of setting the "Slow Ramp Time" on the Pool (keeps the server out of the pool for a specified amount of time after the first successful health check. Good for allowing the server to totally recover after a reboot, etc...).
3. Create a custom Health Monitor that is applied to the Pool. The monitor can be configured to look for a specific response when checking a specified file. If an unexpected response is recieved it will mark the pool memeber as Failed. You can configure your automated maintenance to change the file removing the node from the pool, and then change the file again allowing it to be added back into the pool.
Option 2 is what I would recommend (I would also suggest setting the "Action On Service Down" to "Reselect" if you choose this opton as well (It will redirect the user to a different node more gracefully if they are connected to a node when it goes down).