We use a ring type of a test to check the nodes by group of 10 or so nodes (10 by default, see the global settings to change the default). If you are using PostgreSQL (and this possibly happen with other database systems,) there are times when you may only check one node at a time! We could add an ORDER BY so as to avoid this problem, but that would require a lot more processing time so instead we have this potential bug. Increasing the number of nodes to be tested may help since once in a while the NID will revert to zero and then many more nodes can be worked on at once.
Although probably rare, this function does not properly manage the case when two different users/processes (i.e. a user and CRON) work on the exact same node. This means the function may fail once in a while, yet very rarely.
Dashes, spaces, and a few other characters, are considered separators and some will not be properly handled.
At this time this function does not automatically handle words in plurial. If you have a word such as "world" in your taxonomy but "worlds" in the node body, it will not be detected unless you have worlds in your term synonyms.
This could be optimized to not reset the node terms in case the comment is not currently published. On the other hand, the update could mean a comment going from published to unpublished and the administrator selected "remove terms that are not defined in the node."