You are right: TGridPrinter was designed to print the entire grid and distribute it over several pages if needed. For the case that only some given cell block is to be printed there should be properties for StartCol, EndCol, StartRow and EndRow. A patch is welcome.
If there are not too many columns overflowing the right margin, you could consider calling GridPrinter.ScaleToPages(1, -1) (1 = number of horizontal pages, -1 = no limit in vertical pages). This way the grid is scaled so that its width fits within the page margins.