Bug 24480 comment 9 points out that the current system of adding subfields at the end of the field isn't always what someone will want. However, since many fields have a particular non-alphabetic order for subfields (in a personal name, subfield q (the fuller form of name) follows a, before dates in d) or a semantic meaning to the order of subfields (subject fields) or a variable order based on how you use them (if I used 521 I might be tempted to use $bFoo:$aBar to get a display of "Target Audience Setting Authority: Goats" rather than an unclear "Goats Target Audience Setting Authority"), fixing this will require figuring out what methods of specifying location can and should be supported, writing UI to specify them, and either adding those methods to MARC::Field (which only does "at the end") or just making "Add a subfield" actually be "Create a new field by copying the existing subfields of an existing field with one added and then delete the existing field" in the backend.
Agreed. A suggestion would be to create a feature that can set the order of those subfields and attach that order to a framework-- forcing the display of those subfields to a particular arrangement (alphabetical, custom, numerical subfields first, etc). Notably-- this is an issue when batch editing serials or other collections, modifying or adding information to subfields can make those items display in unusual orders, making it difficult to clearly see which serials might be missing from the collection, which serials might have incomplete records, etc.