We have done both ways with defining routes for each event and also using wild cards.
To avoid the problem with segments not being defined we usually create a new message type in the Variant that is called ADT_ALL and usually base if off of a A04 then add all your Z segments or any other segments you may need. Then copy that message structure to all the ADT message types. Use that message type in your Xlate definition. By doing this we avoid undefined segments in the process logs.