Do triggers compile each time?
The XE event being used is leading you incorrectly to think the trigger is actually compiling every execution.  There are two extended events query_pre_execution_showplan and query_post_compilation_showplan that have similar descriptions, but differ by one important word:

query_pre_execution_showplan


  Occurs after a SQL statement is compiled. This event returns an XML
  representation of the estimated query plan that is generated when the
  query is optimized. Using this event can have a significant
  performance overhead so it should only be used when troubleshooting or
  monitoring specific problems for brief periods of time.


query_post_compilation_showplan


  Occurs after a SQL statement is compiled. This event returns an XML
  representation of the estimated query plan that is generated when the
  query is compiled. Using this event can have a significant
  performance overhead so it should only be used when troubleshooting or
  monitoring specific problems for brief periods of time.


The events aren't exactly the same in description and occur at different times from further testing using your repro.  Using a much larger event session definition, it is easy to see where compilations actually are happening.



Here you can see the first compilation happening for the insert statements as prepared plans being auto-parameterized in the green box.  The trigger is compiled in the red box and the plan is inserted into the cache as shown by the sp_cache_insert event.  Then in the orange box the trigger execution gets a cache hit and reuses the trigger plan for the second INSERT statement in the batch, so it's not compiling every execution of the INSERT command and the plan does get reused as you can see with the sp_cache_hit event for the trigger.   

If we run the two INSERT statements individually again after the first execution the trigger doesn't compile again as shown in the events below:



Here the first statement encounters a cache hit for the prepared auto-parameterized version of the statement in cache but a miss for the adhoc batch that was submitted.  The trigger gets a cache hit and doesn't compile again as shown in the red block of events.  The green block of events repeats this behavior for the second INSERT statement run as a separate batch. However, in every case you still see the query_pre_execution_showplan event firing which I can only attribute to the difference in being optimized vs compiled in the event description, but the trigger isn't compiling for every execution as shown by these series of events.