Frederick,
OK, I took a look at the actual code.
The first time through when updating a list, BeerSmith calls InsertItem (LVM_INSERTITEM) to set the text for the first column then calls LVM_SETITEM to set each subsequent column text for that new item. This is consistent with the Windows spec - one must insert an item into a list before setting the columns.
After that, if doing an update BeerSmith will not recreate the list, but will instead use LVM_SETITEM to reset the text of all of the items that are already in the list, assuming the list has not grown. I suspect it is this second round of updates that is causing the problem in Wine. BeerSmith, for example, will LVM_SETITEM for column zero text if it already exists. Again, this is consistent with the windows documentation.
One obvious fix, since these are short lists, would be to just rebuild the list every time from scratch using INSERT/SETITEM as we do the first time around. I'm not sure this would fix it, but I suspect it might.
Brad