We fondly call this feature a bug ...

Edit the /includes/functions/functions_lookup.php and around line 419 change the code to read:
PHP Code:
// text required validation
    
if (ereg('^txt_'$option)) {
//      $check_attributes = $db->Execute("select attributes_display_only, attributes_required from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id='" . (int)$product_id . "' and options_id='" . ereg_replace('txt_', '', (int)$option) . "' and options_values_id='0'");
      
$check_attributes $db->Execute("select attributes_display_only, attributes_required from " TABLE_PRODUCTS_ATTRIBUTES " where products_id='" . (int)$product_id "' and options_id='" ereg_replace('txt_'''$option) . "' and options_values_id='0'");
// text cannot be blank
      
if ($check_attributes->fields['attributes_required'] == '1' and empty($value)) {
        
$check_valid false;
      }
    } 
See if that works for you ...