So...
@jmlevy 's expression says find all word characters (a-z, A-Z, 0-9, and underscore) followed by a period and the end of paragraph. From my reading, it appears that it does not match Hebrew and/or arabic characters. The use of non-Latin characters is an important bit of information.
\S+?(?=\r|\z) matches any non-whitespace characters (shortest match, triggered by the ? after the + sign, but in fact that probably is not doing anything;\S is the negaive of \s which is any whitespace). followed immediately by a paragraph return or the end of story (\r is the paragraph return, | is "or" and \z is end of story). This expression will also fail if there is any trailing white space at the end of your paragraph (an extra space after the last period, for example).
Since $ indicates the end of paragraph, even without a return at the end of a story, it is a much more compact way of saying \r|\z . \S+\s*$ finds all non-whitespace characters along with any trailing whitespaces if they exist, immediately before the end of a paragraph ( the * after the \s means match zero or more occurences, so it picks up paragraph with or without the trailing spaces).
It's not so much that GREP styles are finicky as that GREP expressions themselves can be tricky to design to match all of the text cases you want to find, and only those cases. There are times when it simply isn't possible to do with a single expression, and it is necessary to to use Find/Change with a series of expressions to accomplish the task.
... View more