best location for features related theming customizations The following is a simplified scenario of an organizational problem I'm facing.

I have a site with a single features module which handles all my content types. My features module is called foo and my zen subtheme is called bar.

One of my content types (e.g event) needs a special class on it so I have 2 options.

Add the class via the foo.module:

function foo_preprocess_node(&amp;$vars) {

  if ('event'==$vars['type']) {
    $vars['classes_array'][] = "extra-class";
  }

}


or add the class via the template.php of bar theme:

function bar_preprocess_node(&amp;$vars) {

  if ('event'==$vars['type']) {
    $vars['classes_array'][] = "extra-class";
  }

}


Which one of the two is the best location for this theme related customization? Without the feature there will be no event content type. So it feels like placing the code in the feature module file together with the content types is the best place.

On the other hand this css class is theme related so it also feels correct to place it in the template.php.
This is just my opinion...

The HTML class itself is not related to the theme, it's related to the module defining the element on which it's placed (if it is a feature specific class name as @barraponto points out in the comments). 

The styling for elements with that class is the theme's responsibility.

I would suggest that your code would be more appropriate inside the feature module. If it's not, imagine what will happen if you change themes...you'll lose the class that was on that element, meaning it can no longer be targeted for styling.