It depends, as always. Event-driven programming has its advantages and disadvantages, much like everything in the world. All major windowing systems (such as Windows or X11) are event-driven, they'd hardly be if there weren't some obvious advantages to that approach as well.
Most importantly, it makes your program (which does not need to be a game) more flexible. Getting back to the walk-2-secs-before-dropping-dead example, adding such a thing means having to substantially rewrite program code. Using an event-driven approach, it means (in the most extreme case) to modify a script, possibly even after the game has shipped. Running scripts to respond to events is not only a possibility, but something that is actually done in many real games.
Say that the team working on your game's next expansion pack decides for a ring-of-instant-revive item (maybe some kind of "premium" item, or a "rare drop" that you can loot, whatever). When your character dies, and one of the 3 charges on the magic ring remains, the character is revived. How do you implement this? How do you implement all the special cases for the other already existing 75 equipment items in your game?
Given events, you're firing an event whenever an item is picked up (or bought from the shop, or equipped, whatever), which does nothing most of the time.
Now for that particular item, you let your artist create a fancy picture for that new ring, and add a script that is run on the PICK_UP (or EQUIP) event, which registers a handler on the YOU_DIE event (and, if you can drop/unequip items in the game, one on DROP). The handler script on YOU_DIE restores some health and returns "do not continue handlers". Which effectively prevents the default YOU_DIE handler from running, and presto, the magic works.
It may not be the most straightforward way of thinking, and I can see your argument how debugging may be a little harder, but on the other hand you gain a lot of flexibility, without a need to modify and rebuild the program, and re-distribute a 50-100MB executable.