I'd always assumed that OnActivate meant nothing would happen (no script processing) until you actually dealt with the object.
Every script currently loaded (global script, script on item in inventory, script attached to object in currently loaded cells) is run once per frame. In either of those scripts above, the value of onActivate will be checked every frame unless MenuMode == 1.
Which way a script is written will come down to the preferences of the script writer. In simple terms you want to run the fewest instructions required at any given time, and in terms of the two scripts shown I doubt there would be any difference between them (the second would give a small space saving). You could rip out the compiled scripts, and assuming you know the op codes and the clock cycles required to run them, calculate the most efficient, but I still think any differences will be inconsequential.
Also bear in mind that readability can sometimes be at least as important as script efficiency.
Personally, I would write it the second way since I consider the second return in the first script redundant.