I am running vanilla UE4 4.14 (preview) and it looks like UMG Timeline Events are triggered when an animation loops.
For example I have this simple timeline with an event triggered at 0.25s.
That event triggers a delegate which simply prints an incrementing number to the log.
So if I play that animation with no loops I see this in the log:
LogBlueprintUserMessages: [TestWidget] TIME LINE: 0
However, if I play the animation with 1 loop, I see this in the log:
LogBlueprintUserMessages: [TestWidget] TIME LINE: 0
LogBlueprintUserMessages: [TestWidget] TIME LINE: 1
LogBlueprintUserMessages: [TestWidget] TIME LINE: 2
If I play the animation with 2 loops, I see this in the log:
LogBlueprintUserMessages: [TestWidget] TIME LINE: 0
LogBlueprintUserMessages: [TestWidget] TIME LINE: 1
LogBlueprintUserMessages: [TestWidget] TIME LINE: 2
LogBlueprintUserMessages: [TestWidget] TIME LINE: 3
LogBlueprintUserMessages: [TestWidget] TIME LINE: 4
Based on the timing of when the extra calls are happening, it seems obvious that the event is triggered when animation sequencer returns to the start of the animation.