SpellEffectEvent is more efficient and to the point. SpellEvent does the same but does a lot more on top of it. It is great if you need access to additional spell event data from an end-cast event, for example.
Spell System is a combination of SpellEvent, Table, GroupUtils, Timer32, FilterUtils, GetRandomUnit/SubGroup and an automatic garbage collector.