Yes sometimes BP handles stuff for you, in this case the bp construction script is handling the instances array you have inside your component, but c++ does not, so everytime you are executing the construction script you are adding a new instance without cleaning the old instances that were there before. All you need to do in your c++ code is clear the instance yourself, or keep track about how many you have.
Cheers