Historically, this behaviour was caused by the underlying terminal implementation.
When you press the V key, the terminal sends the ASCII code 118, and when you press Shift-V, the terminal sends the ASCII code 86.
The Ctrl key was used for sending control characters, and it worked by clearing the 6th and 7th bits of any other keys pressed while it was held down.
If we convert the ASCII codes into binary, it's easier to see what's happening:
- V 86 → 1010110
- Shift-V 118 → 1110110
- Ctrl-V xx10110 → 0010110 → 22
- Ctrl-Shift-V xx10110 → 0010110 → 22
The codes sent to Vim are identical!
It is therefore impossible for terminal Vim to distinguish Ctrl-Shift-V from Ctrl-V.*
gVim uses the same underlying code for handling key-presses, and although it can handle some things that terminal Vim cannot, distinguishing between Ctrl+Shift and unshifted Ctrl is not one of these.
You can work around this in some terminals by configuring them to send a different keycode when you press certain key combinations and then mapping these keycodes in Vim, but such terminal configuration is outside the scope of this site.
A more detailed explanation of the issue, along with other terminal quirks, can be found here: Terminals are Weird.
*: There have been more recent developments that enable this, but so far, these have not been incorporated into Vim and there are no concrete plans to do so.