So your foresee your app will be web-based, desktop/GUI and mobile. That's nice vision.
For me, allowing maximum reuse of say business logic and utility classes would be key. Doing these business logic in
EJB will at least allow you to use in both web and GUI (not sure about mobile).
Talking about mobile, you may consider mobile web meaning it's a web app but the screens and stuff fit on a mobile device. This then surely can reuse EJB business logic.
Depending on how complex your design will be, separating the parts into its own jar libraries may be a good idea. That way you wouldn't need to duplicate code in all apps. The EJB too is just a jar like any library when put in web and GUI.