Alright, I've resolved this.
Essentially, the expression above won't work in a browser form (the count will give 0, then add one, deleting the first row). However the following will produce the desired behaviour in a browser form:
concat("Delete /xpath=/my:ElectronicChangeControlForm/my:TaskSection/my:TaskTable/my:Task[", count(preceding-sibling::*[local-name() = "Task"]) + 1, "]")