PSBTInput::Merge copies every optional input field from the other input when it is absent locally, except PSBT_IN_SIGHASH_TYPE. So combinepsbt silently drops the sighash type whenever the first PSBT does not carry it, making the result depend on the argument order.
The field is what lets finalizers enforce the sighash type of existing signatures (BIP 174). When it is lost, FinalizePSBT falls back to the default type (SIGHASH_ALL, or SIGHASH_DEFAULT for taproot inputs), rejects signatures made with any other type as a sighash mismatch, and the PSBT can no longer be finalized. Combining a PSBT signed with ALL|ANYONECANPAY after a merely updated copy of the same PSBT reproduces this: finalizepsbt reports it as incomplete, while the reverse order finalizes and broadcasts fine.
Merge the sighash type like the other optional fields, keeping the one already present, and test both combine orders.