As I suggested above, the textbox is also bound to the VM, so it updates the VM outside of the grid flow of control. This is alluded to in a comment (somewhat buried) that in order for templated cells to follow the validation of grid, you need to create a custom column. So that's what I did, and it solved my issue.
I would suggest the documentation be update on the "Setting CellTemplate and CellEditTemplate" page, to highlight this, as it already does on the document section "Create Custom Editor with RadGridView", where it says
more important this [CellEditTemplate] bypasses the RadGridView validation and editing engine
Had I seen these on the page about templating, I could've saved myself a few hours of hair pulling