This can be done with one helper column with values, one column with checkbox values (“Linked cell” in Data tab in checkbox options) and two columns with IF() functions.
The helper column contains the complete list of tasks and does not change. For ease of use, this column can be hidden after completion. The IF() function in column E displays the value from the auxiliary column if the checkbox is not enabled and an empty string otherwise. The IF() function in the column I works the other way around.
It is possible to implement the scenario that you described - to move the contents of the cell back and forth when the checkbox is clicked. But this will require a macro and additional protection against accidental deletion of data from the cell.
By the way, if you just need to visually clear the todo list from completed tasks, maybe conditional formatting will be enough, which will simply hide the text if the checkbox is checked?