Usually i create a custom field and limit the list values, use a workflow to populate the native field and hide it on another tab. That way users only get what is in the custom list you create, but the native field still gets populated. However some lists you can actually change the values, it depends on what list it is! I have no idea on script, but i would do it the way i have suggested normally anyway!