scatter3(score_PCA(:,1), score_PCA(:,2), score_PCA(:,3), 15, label, 'filled')
That generates one graphical object
legend(Legend, 'location', 'best')
That can only label graphical objects. You only have one graphical object, so it can only create one legend entry.
Before telling you how to fix the problem within the code you already have:
Have you considered using one of the File Exchange gscatter3() instead ?