I was attacking this issue for 2 days trying different ways to code with sym.renderer. I discovered some other things and a work around for me.
Addition to this issue. I was getting the same issue when I tried to manually adjust the symbology using the Symbology menu. When I first open the menu it opens with Natural breaks selected, and with 5 classes. However it has the wrong field selected so the moment that I change the field to the one I need to symbolize by it changes the classes to 1. If I manually change the classes to anything other than one, it does not keep it. It reverts back to 1.
So this feature class/layer has over 117,000 rows/features in it. I have discovered that if I added a definition query to the layer reducing the number features then all of the above code seems to work fine. This is replicable using the symbology menu and using the arcpy code. The layer with the definition query is now manageable for the symbology menu manually when I change the number of classes in there the change sticks. So it appears to be a problem relating to too many features in the feature class or too large of a sample size for the sym.renderer to manage.
I can use the definition query, is there a way to except certain values or increase the sample size of sym.renderer because maybe defintion query work around will not always be viable?
I ran into the same problem in 2.7.2. I found that it only happened if the layer is part of a join. If I removed the join or copied the features to make the join permanent, I was able to change the number of categories with no issues.