Yes, initializing the shift register is important. Ohterwise it retains its previous value, as you discovered.
A for loop runs the minimum of the number wired to N or the number of entries in an autoindexing array. If your Fault Status array never has more than 20 elements, wiring to N is not needed. If Fault Status has fewer than 20 elements, the loop will only run until they have all been tested.
You can also move constant parts of the strings outside the loop rather than rebuilding them on each iteration.
The comparison functions work on arrays and produce array results (unless Compare Aggregates mode is selected).
Here is a modified version of your VI.
Lynn