View the original community article here
Last tested: Sep 18, 2018
Each developer can have their own local version of any branch if they checkout another branch. If developer X deletes branch A, and developer Y had checked it out, the other developer will still have branch A. If they then push it to production, it will be resurfaced in remote for everyone.
If developers want to clean up their branches, each individual will have to delete the agreed upon branches to remove so they can't be resurfaced.
There is a feature request for having an option to forcefully delete a branch across developers