Labels get hidden behind graphics on data frames.
At the moment we either have to reserve a whole strip of the printable area for title block, legend etc, or use various kludges: shuffle title block, legend etc around until they're not hiding any important labels, or convert certain labels to annotation & move them, or finally create a feature by eye, with no snapping, & to clip the data frame. All far from ideal.
There needs to be a way of clipping the data frame to graphics, including auto-generated ones like legends - so the clipping would need to adjust itself if the legend changed shape or size etc. This way the labelling engine would only place labels where thay can be seen.