With every add or delete operation, each overlay node will get eight additional lines, containing different amounts of whitespace:
four between <overlay> and <link>
one between <link> and http://...
one between http://... and </link>
one between <description> and the description text
one between the description text and </description>
This makes the file hard to read.
Indeed, sucks big time :-)
This is fixed now as a consequence of migrating Layman to ElementTree.
You can emerge app-portage/layman-9999 (Layman live ebuild) to check it out.