Using the first way is correct. If you want the column to also appear that it is editable, please see my answer to this SO question: How to show complete column as editable in extjs grid(cell editing)?
The reason why the second approach is not working is that the combobox is not in anyway tied to the record data that it should be updating. On initial render you are setting the default value of the box with records value through the renderer, but when someone goes to edit that value, there is nothing to say: "Hey update the record with this value also." Since there is no defined binding between the record and combobox, the combobox doesn't actually tell the record the new value, and therefore when the grid goes to display the value from the record again, there is no updated value to display.