@svinter, you're welcome; glad I could help.
It's because the KM Engine is faster than your fingers.
All kidding aside, when you press return (or click an item), the Prompt With List action detects the return (or click).
Then within a millisecond or two the Switch/Case action evaluates local_Choice. Then within another millisecond or two the If Then Else detects that state of the modifiers. All of this occurs before you have lifted you finder from the modifier key(s).
But @svinter, your question does raise an interesting point. Theoretically, if would be better to determine the modifier states first, then use the Switch/Case within each. Here's the above shortcut with that change.
DOWNLOAD Macro File:
Prompt With List with Modifiers Optionally Pressed.kmmacros (19 KB)
Note: This macro was uploaded in a DISABLED state. It must be ENABLED before it can be run. If it does not trigger, the macro group might also need to be ENABLED.
The macro also includes the MILLISECONDS() function four times which are used to generate this: