If you are going to use that shortcode inside post/page content, then you can build any layout/design with that shortcode. You can do even more if you are calling do_shortcode()
in your theme.
Technically its possible to do it and whether it would be a good implementation or not depends on the use case. Like for specific layouts inside the page content, this is an excellent choice but for using it as a substitutes to page templates, that will be a bad design choice.
You can do pretty much inside a shortcode, point is when you should. Read more on implementation here - http://codex.wordpress.org/Shortcode_API