Lets think that we have a custom table to show list of records. Sometimes you might have to provide editable options for column. One simpler solution is to have a edit link and open up a form and let the user update the records. But a much more simple user experience will need inline editing of columns. Simply using theme('table') with textfields might not work since theme_table will run on the render array, your form elements will actually be rendered out to the screen, but the form won't have any knowledge of the values (as they are not technically children of the form) .