It doesn't have to be in a Draw event. However, it doesn't make much sense to put it anywhere else. Doing so would most likely result in whatever you're drawing not ending up being visible, because the room's background will overwrite it. The exception to this is drawing to surfaces, but for those to be visible, you'd as well have to draw them to the screen in a Draw event further down the line.
That aside, the manual recommends handling drawing in the Draw event as the graphics pipeline is optimized for it to be done there. Drawing anywhere else therefore means you're on uncharted territory, and would be the rough equivalent of walking on a frozen lake.
Putting it in a script is fine as long as you then call the function defined by this script in a Draw event.