Research Grade is applied based on the community taxon (on the right side of the observation page), not the observation taxon (in the header of the page). However, the site gives no indication of this, and in fact iNat shares the observation taxon with GBIF and other partners, based on whether the community taxon is RG. In nearly all RG observations these have the same value, but there can be edge cases, such as yours, where observations can be RG with an observation taxon based on an unconfirmed Leading ID. Another example is when an observation is manually made RG at the genus level by somebody checking “community taxon cannot be improved,” while there is still an unconfirmed (but not disagreed-with) Leading species ID. IMHO, both of these are a problem.
As you have probably noticed, based on your interest in peppered moth subspecies, a single initial Leading subspecies ID does not change the community taxon or observation taxon at all. This is a clumsy way of preventing observations with a single species ID and a subsequent subspecies ID from appearing to be “RG subspecies” observations. It also prevents leading subspecies IDs from downgrading RG species-level observations back to Needs-ID. This design has been subject to its own criticism. But, in your case, since the initial ID was at subspecies, the later species ID did change the community taxon and make the observation RG. This is not a “bug” per se, but an inelegant design choice.
If you are not comfortable having your observation RG without a second opinion on the subspecies, you can check “yes the community taxon can still be improved” under the Data Quality Assessment. Just keep in mind that I’m pretty sure you will need to uncheck the box manually (or somebody else will have to counter it with a ‘No’ vote) once somebody agrees with you, to let the observation become RG again.