Seam uses (can use) EJB session beans implementing a local interface for its "action components". You could just as well have a separate session bean that is just a standard EJB3 thing with all your business methods and without any seam anotations and then have your action beans look up the session bean and call its methods. This all depends on what you need. If you want to use your session beans from the outside world (desktop app) you'll have to implement a remote interface and it's not always sure that you want to have the same interfaces for local and remote anyway. I think the lack of strict layers in the examples is as you say for brevity. There's nothing in Seam that forces you to do it as it's done in the examples. And at the same time there is no law that says you need strict layers to acomplish the tasks that the example apps are there to solve.
For your other question I'd say you just have to get used top it, you'll love it :-)
(1) Seam does not enforce any special layering on your application. If you want to layer your app as:
Go ahead and do that.
(2) If you think about it, this is how *all* web applications work. Anytime an action modifies a session or request attribute, that is a "side-effect", by your definition. (But actually, that is not the usual understanding of the word "side-effect".)