after reading this thread I wonder why no one simply created a proggie to update the block inserts with new attributes only.
I had a need some time back to add attributes to blocks that were already defined. I tried, just like you have, to redefine the block and then update the blocks with attsync....while this worked ok, it also moved the attribute, changed the width back to 1, and generally messed things up. So.....
I simply used a lisp to add the attribute to the block selected. Something like this:
Select block to add attribute:
Select objects: 2 found
Select objects:
Enter attribute tag: PART_NO
Enter attribute value: PN:431-0
Select point for new attribute:
Block updated