There has been much discussion through the years about the automatic GPL status of Themes and Modules, and I will weigh in on that topic itself in another post (see the bottom of this post). But for now suffice it to say that I see an argument in favor of requiring GPL for Modules but I see a very different and very compelling argument in favor of excluding Themes from the GPL mandate. This post is to address a pre-cursor to that argument ...
If there is ever to be an exception for Themes but not for Modules then we must start by creating a clear distinction between what a Theme is and what a Module is. Fortunately such a distinction is pretty easy: While both are a form of "add-on" or "plug-in" to the Drupal system, Themes are about layout and Modules are about content. In the same way that CSS should never need to worry about what content is in the various HTML statements, Drupal Themes should never need to worry about what content is in the various nodes and databases.
Themes should have very little latitude to decide what data they are to display. It is the pre-eminient domain of the Module to process and select records for display. A good example of what I mean is that given a table of data a Theme may implement an AJAX type interface to color, sort and even filter rows for display. This filtering would seem to be a selection decision by the Theme but in reality the base data was all provided by a Module and the Theme is merely "prettying" it and hiding some of it at the User's or Developer's (default) request. If the User switches to a non-DHTML powered Theme that same data will still be displayed, probably as an HTML TABLE, sans the AJAX functionality.
Another thing to think about is data management. When it comes to "CRUD" a Drupal Theme should only be allowed to use the "R" function, leaving Drupal Modules and Core alone to chew on the remain "CUD" functions. If a so-called "Theme" starts altering existing data and then returning it for storage to the database then it has crossed the line into what a Module is supposed to do. Note however that if a Theme presents the User with a form containing a field of text data that can be edited and then sends any changes in the text back to Drupal, the changes were not done by the Theme but rather by the User. Likewise the Theme did not create or populate the form and the Theme did not further process the data after the SAVE button was pressed.
This is how I see the difference between these two items and I welcome any comments on this subject to help improve the distinction between Themes and Modules. Please stay on-topic and don't hijack this post to discuss the GPL issue as it relates to Themes ... that is addressed in my post called "GPL group recommends CMS templates be licensed under a different license.".