sample code that generates the strange behavior,
set label 1 "label" at screen 0.5, screen 0.5
set multiplot layout 10,4
do for[i=1:40]{sin (x)}
The code prints the label during every iteration, you can notice the label bold and blurry. I would expect the label to be printed once since it is outside the loop. Is this a bug or I am using the software wrong?
That expectation is wrong, because the label is not outside the loop. You misunderstood what "set label" actually does: it tells gnuplot that all subsequent plots shall have this label, until it's turned off again.