ModelAdmin automatically creates the Contact GridField for the LeadsAdmin. Your codes overwrite that gridfield.
I think it is a 'bug' that GridFieldAutocompleter doesn't look into the $searchable_fields of the Contact object to find out what searchable_fields are. It only checks if the Contact object has a 'Name' field or not to decide whether the Contact object is searchable or not.
Although your solution works but i think the perfect solution is to update The GridFieldAutoCompleter. Hope the SS team can look into this?
I stumbled over the same bug but after some trial and error I decided to modify the GridFieldAutocompleter in the core. For anyone interested:
framework/forms/gridfield/GridFieldAddExistingAutocompleter.php line 260