got it:

grid.grouping.groupBy = ['productName'];
grid.grouping.enabled = true;
grid.grouping.expandMode = true;
grid.columns[2].visible = false;

not sure if this is documented anywhere, but the chrome-console helped me to find this by reverse-engineering a working grid-group example.

using grid dynamically is incredibly powerful.  i hope that smart-elements starts to provide examples of dynamic-grid.  i believe that others would find it exceptionally useful.