The question is answered by asking a simple question: what happens if the event never comes? Do you want your program to sit there waiting on something that won't happen?
Some events are more or less guaranteed to happen; them not happening means that bad things are going on. Not getting the v-sync event means that the display no longer exists. Or something. Not getting a timer event means that the Allegro timer system is broken (or someone set the timer to a really long duration). But some events may not happen at all.
The timeout is there in case the event is never fired. That way, you can detect it (via the return value) and do something about it.
What so bad about just waiting forever until an event comes?
Because a program needs to be responsive. Presumably you're using the Allegro Game Programming library to make a game.
Do you really want your game to stop for 2 minutes because of some event? Do you want your display to sit frozen on an image for 5 minutes, with the user not knowing what's going on? Or do you want to be able to pop up a dialog box saying, "Hey, I'm waiting for something. Hold on a bit." And then display an animated wait cursor.
Waiting forever is never a good idea.