I think you're misunderstanding what ? means to the router. The router only deals with url segments, not query strings. Query string parameters (?term=term) are available to the Request object (which you'd use in the controller (etc) to access), but they are not dealt with at the router level.
'/{term?}'
What that is saying is that the term segment is optional. Since it's within the "customers" prefix, it would mean that /customers/this-segment-is-optional would work whether or not something appears there in the 2nd segment. If the segment is not included, then it would default to null because you have $term = null in the index method. If it was included, then in the controller $term would be whatever the 2nd segment was, or "this-segment-is-optional" in my example.
https://laravel.com/docs/5.7/routing#parameters-optional-parameters