The use of these is based on what you want to accomplish. As an example, I use an OnObjectExit script trigger to make a Popover modal. If the user clicks on the the main layout the OnObjectExit script is triggered. If a Global variable has a value, the script keeps the Popover open. When the user clicks one of the buttons on the Popover a script runs doing the work required, clears the Global variable and closes the Popover.
Using validation on a field probably wouldn't do this, or it would be more difficult.