The filefield_widget function sets the form encoding type incorrectly, erasing any other attributes that may exist on the form. It currently does
$form['#attributes'] = array('enctype' => 'multipart/form-data');. What it should do is
$form['#attributes']['enctype'] = 'multipart/form-data';, possibly checking first to make sure that the #attributes element exists and is an array.
In particular, the current mechanism will erase any custom classes that may have been added to the form previously.