In that file, you check for the configuration_group_id in the configuration_group table then Delete for that value in the configuration table ...
/* Find configuation group ID of Previous Version of Cross Sell */
$sql = "SELECT configuration_group_id FROM ".TABLE_CONFIGURATION_GROUP." WHERE configuration_group_title='".$xsell_old_menu_title."' LIMIT 1";
$result = $db->Execute($sql);
$xsell_old_configuration_id = $result->fields['configuration_group_id'];
/* Remove Previous Version of Cross Sell from the configuration group table */
$sql = "DELETE FROM ".TABLE_CONFIGURATION_GROUP." WHERE configuration_group_id ='".$xsell_old_configuration_id."'";
$db->Execute($sql);
/* Remove Previous Version of Cross Sell items from the configuration table */
$sql = "DELETE FROM ".TABLE_CONFIGURATION." WHERE configuration_group_id ='".$xsell_old_configuration_id."'";
$db->Execute($sql);
But if nothing is found on the configuration_group, the value is probably going to be 0 for $xsell_old_configuration_id so you first delete from the configuration_group table where the configuration_group_id is 0 which should probably not cause any harm but is not a good idea ...
The problem is you then delete in the configuration table for that configuration_group_id and the 0 is the configuration_group_id for these 3 values in the configuration table ...
So, rather than deleting for what you mean to delete for, you delete important configuration_keys for Zen Cart ...
This thread better explains the issue:
http://www.zen-cart.com/showthread.php?170483-Attribute-Required-for-Text-flag-not-working
and post #9 is a nice write up by swguy explaining the specifics of the issue with a possible better approach to this ...