I agree with @jhurley and @Stefano's answers, but let me add a different angle:
Going back to first principles--what is the user's context and what task are they trying to accomplish?
I'll use my own experience to illustrate, since I don't know who you're designing for. Loosely ranked by frequency of use, these are my personal scenarios:
I have discretionary time and am looking for a task to take on.I
want to quickly review all my options and make a selection.
I have completed a task and want to update my list.
I want to review what I have completed and get a sense of my
accomplishment, as well as trigger any additional next actions.
I want to revive a task that was marked completed earlier (either
because it was checked off accidentally, or I want to use it for a
slightly different task).
For each of the above tasks, I want to separate DONE from not-DONE tasks.
I've seen several implementations of this separation:
a) spatially separate them (usually not-DONE on top, DONE tasks below)
b) check mark in front of DONE tasks (and blank checkbox in front of non-DONE tasks)
c) strikethrough the task title for DONE tasks
d) filter / toggle whether
ALMOST EVERY task manager implement (b) and (c). (e.g. Wunderlist, 2Do, Toodledo, Asana). SOME implement (a), and (d). I consider (d) a more advanced feature, and whether you do (a) depends on how important it is to preserve list order.
To answer your specific question, the only advantage I see of a label vs. strikethrough is a slight increase in readability.
The advantages of strikethrough design:
- mimicks what people do on paper, which makes it much less ambiguous
- easier to parse (since the user only needs to look at once place to determine status)
- easier to distinguish DONE and not-DONE tasks - the strikethrough as a visual pattern is easier to pick up
- you can reserve labels for other features, like "tags" or "categories"
- this is what most task management apps do.