This is the way Revit solves it. Basically it draws the line to the edge of your tag. In your case the T from Toilet becomes defined as edge of your tag. You are correct in your observation that when the text gets longer than the gap gets bigger. A real solution is not available. You have to resolve to tricks to get around this. Solutions that I have sometimes used are making sure that text is smaller than the box. Add lines in your family that "seem" to connect to the leader (with visibility parameters for left and right) and so on. Maybe not neat but might be the solution to your problem.
Louis
Please mention Revit version, especially when uploading Revit files.