The two forms of taxonomy strings you are seeing are technically unrelated.
The taxa with trailing ; <prefix>__ are Greengenes OTUs which are specific enough to be considered a “species” or “genus” or whatever, but for which no one has an actual name for. For example:
represents some kind of species of bacteria, but we don’t have a taxonomic name for it.
The second form, where there is no trailing prefix, happens when you perform assignment via feature-classifier. It will stop classifying at a confidence threshold that you can configure, so it may only have a classification up to family or genus, and so it stops there.
So in that same example, the feature classifier is confident that your ASV is a member of that GG OTU, and so you receive the “full” taxonomic string (which just so happens to not really have a name for genus and species).