I think there are 2 related problems here:
1. DistributedSpellCheckComponentTest.java runs the test 4 times: first with 1 shard, then with 2 shards, etc. In between iterations, it does not clear the Jetty data directories so the first shard from the 2-shard iteration has all the data from the 1-shard iteration, etc. I can work around this by adding "del(":");" as the first line in doTest(). Unfortunately doing this makes the test fail. I think the problem with the Tester is masking a failing test.
2. The Component ought to report a word as misspelled if ALL of the shards report it as not in the dictionary. However, the current implementation returns a word as misspelled if ANY shard reports it as not in the dictionary.
This second patch version resolves the second issue. The problem with the test may warrant its own issue. (I used the workaround here).