Remove field in the form : only works for “url”, not for “email”?

This works fine for me:

<?php
add_filter('comment_form_default_fields', 'wpse53687_filter_fields');
/**
 * Unsets the email field from the comment form.
 */
function wpse53687_filter_fields($fields)
{
    if(isset($fields['email']))
        unset($fields['email']);
    return $fields;
}

One reason that it could be failing on your theme is that args were passed into comment_form. Specifically, the theme author passed in a fields key into the $args.

As the filter name (comment_form_default_fields) implies, the fields are only defaults.

Fortunately there is another filter! comment_form_field_{$name}. Just hook in and return false and it should get rid of the email field.

<?php
add_filter('comment_form_field_email', '__return_false');