Why are the holes in my polygons not generalized?
I'm guessing you are using GRASS 6.4.x
as there were issues regarding generalizing polygons with holes. This has been fixed in GRASS 7, although I do not have this version so cannot confirm it.
A workaround would be to use the Fill holes tool from the Processing Toolbox on your original layer:
Use the Difference tool on both the original and filled layers:
Use the v.generalize tool on both the filled and the difference layers:
Finally, run the Difference tool again on both the generalized layers:
I recommend you to use the brand new geoalgorithm from QGIS 2.14.1, named Smooth.py
With Smooth Geometry it's possible to smooth the entire polygon, not only the boundaries, as in Chaiken method from v.generalize