You know, I actually never saw anyone talking about why Merlin chose to reveal his magic at that exact instance. As audience, we know he will, because it's the last fucking episode and there is nothing left, but really, have we ever thought about just why then? The battle was won, he got Arthur out and was going to save him, he saw Mordred dead. Why reveal it now?
Because it wasn't enough.
Merlin did everything in his hands and still couldn’t prevent fate— couldn’t stop the vision that haunted him from happening. I thought I’d defied the prophecy, but he didn’t. I thought I was in time, but he wasn’t. So if he took all measures to prevent that misery and yet it still happened, might as well discard everything he’d been taught and finally, finally tell Arthur.
Because let’s be real; Merlin did not reveal his magic just from the desperation of seeking Arthur's acceptance.. it was also a detachment from the overbearing fear that consumed him. That did not allow him to breathe. He saw a lifetime of hiding from the one man he did it all for and said enough. No more listening to Kilgharrah and Gaius; no more running away from the one thing that he truly needed; no more hiding from his own self and from Arthur.
He gave up pleasing destiny, and for once, he chose them.