Autocomplete uses a comma as a stop character because of #201269: Synonym collapsing in core and http://drupalcode.org/project/drupal.git/commit/08b1bb73f770888b39ac8624. The original issue is over 5 years old and was committed over 4 years ago. It was intended to add synonyms to core, which either never made it in, or are no longer used.
This legacy code prevents sending the partial autocomplete term that ends in a comma to the autocomplete callback. This isn't horrible. But it is arbitrary. The comma isn't used in the js. And it prevents you from writing an autocomplete callback that takes advantage of the comma.
Let's assume you have an autocomplete term that has "city, state".
If you type "New" the autocomplete callback is called and you get a list of terms.
If you type "New " ... the autocomplete callback is called and you get a list of terms.
If you type "New Y" ... the autocomplete callback is called and you get a list of terms.
If you type "New Yo" ... the autocomplete callback is called and you get a list of terms.
If you type "New Yor" ... the autocomplete callback is called and you get a list of terms.
If you type "New York" ... the autocomplete callback is called and you get a list of terms.
But if you type "New York," the existing search terms are only restricted, this partial term is not sent to the server.
Next consider how a developer might want to use this. The example might not make complete usability sense, but just consider this. What if ... the callback function parsed the partial term into the city and state and depending on if there was a "," (meaning depending on if there was a state portion to the partial term) returned either "city LIKE :partial" for city only matches or "city = :city AND state LIKE :state" for "city, state" partial terms. The current code does not send the partial term to the autocomplete callback until after the user types the first character after the comma, so if the comma is meant to be a special separator in the term lookup, it can't take affect immediately.
I know this is an edge case example. But unless the comma check is doing anything we should just remove it.