There are more than two possibilities. The distinction between
event-driven and non-event driven (also call a polling sim) is, as you
state, the maintenance of a future event queue in an event-driven, which
can improve sim performance if events are relatively sparse. On the
other hand, if events are dense then maintaining the queue has its own
costs.
The difference between cycle-accurate and non-cycle-accurate (also
called a functional sim) is whether timing is significant in the matter
being sim'd, or if only behavior is necessary. In some cases the timing
is needed to determine the function, and a timeless functional sim is
impossible. The Mill is an examply - the whole machine is statically
scheduled with exposed latency, so to discover what the program is doing
it is necessary to track how many cycles are spent doing what. A
machine without exposed timing, an x86 for example, need not care and
programs can be run on a pure functional sim.
For hardware sim, it usually necessary to go beyond cycle-accurate to
wall-clock accurate simulation because the behavior of the machine
depends on times that are not denominated in cycles. The Mill sim is a
pico-accurate sim, because it models the clock distribution system of
the machine, including the crystal frequency and the settings of the
PLLs. Asa a result, a simulated Mill program can use simulated MMIO to
change the setting of the simulated PLLs to change the simulated clock
frequency that it itself is running under. This approach is faurly
common in hardware sims where the goal is to explore the hardware
behavior as opposed to exploring the program behavior.
Lastly, the hardware guys use gate-level sims that have an even finer
window into the circuit layer than something like the Mill sim. Do not
hold your breath waiting for a gate-levekl sim to finish though.
Obviously the cross-product of the possibilities exist.