Your syntax is a little unusual, but it did work. The error message is coming from the rule, which gets evaluated before being applied. It is at the lowest level, the second part of
ReplaceAll[string, rule]
where the rule has its right hand side StringDelete[s,".del"]
and s is just a symbol so it generates that message. But it stays unevaluated, and once it has a valid list of strings instead of s it works.
The way I would expect this to be entered would be something like
StringDelete[{"a.del", "b.del", "c.del"}, ".del"]