When you create a new post(custom type or regular), WordPress calls get_default_post_to_edit
which then sets the default values a new post will have.
This function provides a few filter hooks for changing the default title, content and excerpt, but unfortunately nothing else... however each filter passes along the complete $post
object to the callback, essentially this means it's possible to redefine several properties(or just one if we like)
This should work for you, simply add the post types the code should apply to as cases inside the switch.. (movie and page are examples)..
function my_default_content( $post_content, $post ) {
if( $post->post_type )
switch( $post->post_type ) {
case 'page':
case 'movie':
$post->comment_status = 'closed';
break;
}
return $post_content;
}
add_filter( 'default_content', 'my_default_content', 10, 2 );
Code was tested on WP 3.0.1 and has the desired effect of disabling comments for the post types specifically whilst leaving others to inherit default status from the default_comment_status
option.
Hope that helps.... :)