Ob du Hash oder Array nimmst hängt vor allem von deinem Schlüssel ab. Bei Events verwendet der Maker deshalb keine Arrays, weil es nicht für jede Event-ID ein Event geben muss (du kannst ja auf der Map ein paar Events mit niedrigen IDs löschen). Entsprechend hättest du dann Lücken im Array, was vor allem dann unangenehm wird, wenn du über alle Events iterieren willst. Wenn du als ID einen Text nehmen willst, bietet sich sowieso nur ein Hash an.

Nichtsdestotrotz würde ich noch einen zweiten Vorschlag anbringen: Was wäre mit Hash[MapId][EventId], also einen doppelten Hash. Oder einen Array aus Hashs? Ich finde die Sache mit den doppelten Keys nicht so prickelnd. Vor allem aber lässt sich über die Map-ID sehr effizient abbilden, weswegen es schade wäre das mit einer nicht so hübschen Event-ID zu vermischen.