We found an answer, but it's very much a workaround.
We determined that all of the field values are saved when you select a value from a multi-valuesingle value metadata field that is linked to a category with multiple keywords. We tried multiple iterations of this, just to confirm that this condition made it publish and that not doing this condition made it not publish.
Following that, we added a new dummy radio button field, pointed it to a category that had multiple keywords, and set one of those to be the default. That makes it work for new components. We also made sure that it had a descriptive label telling the content editor that one of the options had to be selected (since they wouldn't be populated just when you're editing). This should take care of existing components.