Hi,
This is normal because you can restrict the custom fields based on the selected shipping / payment method. So when you change the selection, the system refreshes the custom order fields in case the fields to be displayed are different.
You can edit the file show_block_fields via the menu Display>Views.
There, you'll find this line near the end:
window.Oby.registerAjax(['checkout.fields.updated','cart.updated','checkout.shipping.changed','checkout.payment.changed'], function(params){
change it to :
window.Oby.registerAjax(['checkout.fields.updated','cart.updated'], function(params){
and the fields view won't refresh when you change the shipping/payment method selected.