I have a fix that appears to work. I right-click on each Switch Case Action Subsystem and select “Block Parameters (Subsystem)” from the dropdown menu.

A dialog box appears. On the Code Generation tab. I changed “Function packaging from “Auto” to “Nonreusable function”.

After making this change to the 3 Switch Case Action Subsystems I now get the expected behavior: 3 separate CAN messages are transmitted, each with their own ID and payload.
What led me to try this approach was the realization that the contents of “Switch Case Action Subsystem Tx CAN 2” and “Switch Case Action Subsystem Tx CAN 3” were almost identical. I thought that this might lead Simulink and the MBDT block set to inappropriately reuse code.
I hope the fix continues to work! I would still like to know what was going on.