I am using Windows Server 2016 OS and ColdFusion Build 2018.0.11.326016.
Thanks for that, Khalid. And I have a work-around for this, finally.
First, I will get to trying things on Windows Server editions soon (again, to try to understand when this problem does and does not happen for different folks).
But until then, the work-around is that it turns out that Adobe added a new applicaiton-level property called sameformfieldsasarray, which controls this behavior. (I really thought I'd seen news of that before, but I could not find it when searching because of course that name is not so obvious. It means, in effect, "render multiple form fields of the same name, or with multuple values, as an array", which is exactly our issue here).
And this update specifically changed that to be a default of true (see the technote for CF2018 update 11, for example, and how it points to the bug report CF-4211056, found at https://tracker.adobe.com/#/view/CF-4211056, which indicates the change). And see a comment I posted there with more, including pointing back to this.
I'll note here that for those who want to try the setting, it's only shown there (and in the CF docs) as something that one would set in an application.cfc, using this.sameformfieldsasarray. For those not using application.cfc, note that it can ALSO be set on the cfapplication tag instead, modifying what you may use already in your application.cfm:
<cfapplication name="whatever" sameformfieldsasarray="false" ... rest of your args>
Sadly, there seems no way to set this behavior ONLY for a given cfm template, if that was of interest.
Finally, beware NOT to just throw in a random new cfapplication tag on the cfm template with the form, in order to set this. Even if it may "work" in solving this problem, there could be other unexpected changes in behavior for your app by doing that.
I still look forward to understanding the variation some of us are seeing, even after applying the updates.
And while the reporter of the bug above indicated that he saw different behavior based on WHETHER he was assessing the form variable within or outside of his application.cfm, in the example I offer above I was of course doing the code in its own template...and for what it's worth I had a blank application.cfm. I didn't think to mention that then, as I never fathomed it could matter. I just always put a blank application.cfm in a new folder I create with any test code, to make sure there's no impact of any application.cfm or cfc in a folder above that testing folder.)
Khalid, let us know if this solution works for you (whether you use application.cfc or .cfm).