Turns out it was a Powershell issue of parsing the comma.
From the aws-cli Github issue, answered by jamesls:
I believe the issue is that powershell is parsing the comma character out before the CLI sees the argument list.
For example, the above command is split into arguments like this on powershell:
['elasticbeanstalk', 'create-application-version',
'--application-name', 'Api.Mobile', '--version-label',
'Api.Mobile-production-', '--source-bundle',
'S3Bucket=build-production/APIv1', 'S3Key=build-production-.zip']
If you surround the value in double quotes, then powershell leaves the comma character alone:
$ aws elasticbeanstalk create-application-version --application-name
Api.Mobile --version-label Api.Mobile-production-$builddate
--source-bundle "S3Bucket=build-production/APIv1,S3Key=build-production-$builddate.zip"
['elasticbeanstalk', 'create-application-version',
'--application-name', 'Api.Mobile', '--version-label',
'Api.Mobile-production-', '--source-bundle',
'S3Bucket=build-production/APIv1,S3Key=build-production-.zip']