Each item in the list is being asked to display
fields:“tbl-checkbox title tags”
so surely you should no be surprised to see “todo” as it happens to be a tag?
This is a case which demonstrates the value of using fields for tiddler types, rather than tags, so tags are left free for ad hoc organisation.
I use the object-type field eg object-type=todo in this case a tiddler can only be a todo or something else. If this was the way you listed todo items object-type[todo]
in your filter, yes it is a fieldname[value] operator then todo would not be in your tags.