Hmmm... I may not agree with your opinion...
Anyway, let me explain although I am not an expert and probably other people can explain to you better than me.
Conversation.instance().end() really get the Conversation in the context, so i dont really mind the coding... quite easy and works well at least for me.
You can also end conversation based on the output in the pages.xml or even in the jsf page using seam propagation element.
Hope it helps.