I happened to stumble on this question, and then stumbled on the answer while looking for something else.
This is due to the IMS standard that is used for LTI custom key/value parameters:
From: IMS LTI Implementation Guide
custom_keyname=value
The creator of an LTI link can add custom key/value parameters to a launch which are to be included with the launch of the LTI link. The Common Cartridge section below describes how these parameters are represented when storing custom parameters in a Common Cartridge.
When there are custom name / value parameters in the launch, a POST parameter is included for each custom parameter. The parameter names are mapped to lower case and any character that is neither a number nor letter in a parameter name is replaced with an "underscore". So if a custom entry was as follows:
Review:Chapter=1.2.56
it would be mapped to:
custom_review_chapter=1.2.56
Creators of LTI links would be well served to limit their parameter names to lower case and to use no punctuation other than underscores.
If these custom parameters are included in the LTI link, the TC must include them in the launch data or the TP may fail to function.