a4j:ajax does not create a DOM element so there are no DOM events to be fired from it.
That said, what's "unclean" about the first example? No reason for writing 10 lines of code if you can do it in one.
Thanks Michal, for clearing my doubt.
Regarding the "unclean" code, I would say that the two last examples are a bit more elegant & readable - I guess it is question of style more than of functionality.