I just experienced a very similar scenario:
A customer placed and order and chose store pickup (which is free = R0 ZAR) then decided that they dont want to drive through and pickup so asked for the item to be shipped,
I simply removed the collection option, added a new shipping item to the order and gave it a value or R100 ZAR, clicked save and all works well.
but, for testing sake (we upgraded from 1.1.9 to 1.2.5 this week) i clicked Save & recalculate and the shipping changed back to R0 ZAR again.
A possible bug? or is the Collection price somehow being pulled from somewhere?