Try passing the argument accuracy = 1 to scales::comma
Here's the relevant help text from ?comma - this might help explain why it will by default sometimes add extra numbers after the decimal point:
accuracy A number to round to. Use (e.g.) 0.01 to show 2 decimal places of precision. If NULL, the default, uses a heuristic that should ensure breaks have the minimum number of digits needed to show the difference between adjacent values.