When you use the add, reorder, etc. parameters of Grid, it modifies the BeanModel uses when rendering.
Inside a Form, on Submit, the model is again read and modified inside setupDataSource().
However, subsequent requests for the model return the unmodified model (if the model parameter is not bound) due to the rules of how parameters behave when not rendering. Reading the parameter when not rendering ensures that the value is NOT cached, forcing a re-read of the binding, which means that the property modifications are not visible.
Grid needs to have a secondary variable to store the modified model during rendering and on Form submit.