What happens is that once a file/folder has explicit mergeinfo, each
subsequent merge to the branch will update that mergeinfo even if the
file/folder is unrelated. This is annoying as it introduces more and more
clutter in the changelist for each merge.
To avoid this, only merge to the "root" folder of the branch, for example
"/branches/maintenance2.x". None of the files or folders below
"/branches/maintenance2.x" should then get mergeinfo. Follow the merging advice in the svn book.
Unfortunately, even if you merge only at the "root" folder of the branch,
empty svn:mergeinfo properties can still appear on individual files and
folders when they are copied, to indicate that they have not received the
same merges as their siblings.
It is probably safe to delete the superfluous subtree mergeinfo. One way to do this is by doing a recursive deletion of the svn:mergeinfo property on each file and folder in your project root.
Alternatively, you can upgrade to subversion 1.6. I believe have verified that it fixes this issue. It even seems to delete superfluous mergeinfo added by earlier versions for you.
edit: judging from the comments there are still cases in svn 1.6 where superfluous sub-tree mergeinfo appears. But I have not been able to reproduce that.