TL;DR: This is default org-mode parsing. It isn't going to affect your code when you run it and won't show up when you export either, so it's safe to ignore it if you want.
To prevent commas, you could advise your indent function to act differently in org source-mode blocks. It seems like it's part of the parsing process, so it might be easier to just do a pass at the end to remove them. That is not advisable however: it can lead to problems with exporting.
Removing the commas might make a difference to other functions/programs parsing your code, but I have tried exporting and executing the code both with and without the commas and I didn't notice a difference. This might be true for the OP's simple case, but it is not true in general.
Why is this happening? It is standard for org-mode to treat any line starting with #+ as a keyword option. It prepends the comma to avoid org parsing the line as a keyword option.
This is also true for headlines, i.e. lines beginning with *: see this reddit thread
Also note that this behavior looks to be specific to source blocks. I tried the same thing with #+begin_quote and #+end_quote and it did not prepend a comma. But if you include things that look like headlines in a quote block (or any other block for that matter), the export will break.
I'm not sure why you need #+1, but this will not happen if you use # +1.
Another possibility is to just hide the commas, possibly as part of a syntax highlight pass or something.