This is a big question and if you really want a big answer, than you'll certainly get "it depends".
Optimization is another big thing. Optimizing a PC game heavily depends on the used technolpgy, the language and your expertise in it, your software engineering skills and game programming experience, the user's hardware, scaleability and especially the game and it requirements itself.
To hit the nail: you could even do a Pong game that is hungrier than Crysis, has more bugs than Gothic 3 and runs only on specific systems, has no performance improvement on high end systems with e.g. quadcores and SLI etc.pp.
I am sorry that I am generalizing here but optimization is such an abstract concept that you can't really satisfy anyone without knowing more. Better open new threads...
To answer your question about the tracing thing: it depends
Both concepts are absolutely fine and will work but are you asking which one is faster - or from an engineering perspective better? I would prefer the second method, because every entity in a world should claim its own behaviours and needs. If a barrel for instance knows that it gets destructed on weapon or heavy velocity impact, than you design such an event (including effects) and let it triggered. So, if you drive with a car into that barrel or you make a sniper shot on the barrel, you just generally send a message to each hitted entity (the barrel) and the barrel will react.
For texture events I would group textures together and define events for this group, like for the barrel model.
I am not sure which method would outperform the other. You need in both cases a trace, so that isnt important. But evaluating a string (modelfile, texture) against a big table could be quiet a hassle (use hashes for this, in C++: std::map). Triggering the event is immediate without evaluation (maybe from the model's point of view... which trigger to take when you have abstract event concepts rather than just a single trace-hit trigger event), so.. should be slightly faster.
Nevertheless... such examples are not slowing down your game!!! Rendering, shaders, scene complexity and code execution are the most nasty bottlenecks. Don't get lost on easy things which doesn't make the difference.