If you go to Setup> Tickets> Options, right at the bottom of the options is a check box for Automatically Delete Obsolete Custom Fields. If you put a check in there it should prevent this from happening, it removes any custom fields that are not relevant when you change the request type.
I actually have that enabled and it's still doing it. I did realize though the fields are only getting messed up when I have picked something in the drop down menus. They still carry over when I change the ticket type and sometimes get added to a ticket type that they aren't assigned to.
As you can see in the picture, this is with that option checked. Even though it's a mobile ticket type, it's adding the network ticket type custom fields to the ticket...but what is selected in the drop down menu for the network fields are actually mobile custom field variables. It's literally combining and mixing up the custom fields at times.