No, it is not a bug.
The custom language file is loaded first.
Then the master language file is loaded afterward ... just in case an out-of-date language file is used in override.
Most upgraders tend to not be thorough, and miss merging things in their language files.
Thus, at the present time, the default master file is also loaded to "catch" any defines that haven't been set properly in the override language file.
This only happens on "page-based" language files, not module-based files.
And, yes, doing things this way causes PHP warnings about "constant already defined". It's a cost of protecting upgraders from their own mistakes.
For now, that's how it's done.
It may change in the future.



