This was because to the filtering code, those FCurves still weren't in any groups, and so couldn't be visible (since a temporary group is created to house them). As a result, the visible-channels list would be empty, causing all hidden FCurves to be treated as hidden.