A search on records with a compound type ("location" in my use case) with 'fl=*' returns the internal fields (location_0_d,location_1_d) along with 'location'.
These internal fields are implementation details and should not be returned with the wildcard field set. These fields should be visible if the fl= parameter specifically asks for them. This syntax would make sense: "fl=*,location_0_d,location_1_d". Meaning, "return all the fields described in the schema, and also return the internal fields".