As far as I know, this issue's been dealt with by the latest version of 1.16 Bedrock (1.16.4?), it's strange that it hasn't been dealt with in Java.
That said, if the devs see this, the game should be tracking the hitbox of the dragon, and not necessarily how damage is dealt. When hitbox reaches 0, regardless of the means (because it doesn't seem fair that tnt explosions count and not bed/anchor explosions), the dragon triggers its death sequence, which acts as a trigger for awarding the advancement to the player. If the current trigger is tracking the hitbox and how damage is dealt, then trigger the devs could implement should be the dragon's death sequence.
To prevent mix-ups, a world's starting dragon and a dragon hatched from the dragon egg using end crystals should (and probably do) have separate identifiers, so that when that particular dragon dies and triggers its death sequence (which visually look the same but should also be separately identified in the code. It likely is, but for some reason, I guess it doesn't identify death by bed/respawn anchor explosions?), it awards the correct advancement: "Free the End" (if it's still called that in Java, I know Bedrock changed it to "The End.") versus "The End... Again."
As far as I know, this issue's been dealt with by the latest version of 1.16 Bedrock (1.16.4?), it's strange that it hasn't been dealt with in Java.
That said, if the devs see this, the game should be tracking the hitbox of the dragon, and not necessarily how damage is dealt. When hitbox reaches 0, regardless of the means (because it doesn't seem fair that tnt explosions count and not bed/anchor explosions), the dragon triggers its death sequence, which acts as a trigger for awarding the advancement to the player. If the current trigger is tracking the hitbox and how damage is dealt, then trigger the devs could implement should be the dragon's death sequence.
To prevent mix-ups, a world's starting dragon and a dragon hatched from the dragon egg using end crystals should (and probably do) have separate identifiers, so that when that particular dragon dies and triggers its death sequence (which visually look the same but should also be separately identified in the code. It likely is, but for some reason, I guess it doesn't identify death by bed/respawn anchor explosions?), it awards the correct advancement: "Free the End" (if it's still called that in Java, I know Bedrock changed it to "The End.") versus "The End... Again."