the current scheme will assign the first "Smith J" - "Smith, Jack" and then remove him from the full authors array, meaning that when the next "Smith J" comes around in @authors, he will get "Smith, John".
Unfortunately, I cant really "punt it back to the user" :) as its a script running over a database of several million authors and we dont want to have to worry about manual input.
Update: Oh and I should mention that the same author cant appear twice in @authors, so if there are two "Smith J"'s they must be different authors.