Yes, I guess it should. Wonder how much of a compatibility problem it would be to change that.
Personally I don't really like the dwim in %s in situations like that; I prefer to use %[...] instead. %s essentially becomes e.g. %[^0-9+-] if followed by %d, but there's no full backtracking if the following input specifier fails. Compare:
array_sscanf("abc-123", "%s%d");
(2) Result: ({ /* 2 elements */ "abc", -123 })
array_sscanf("abc-", "%s%d");
(3) Result: ({ /* 1 element */ "abc" })
If there was backtracking, the second case would return ({"abc-"}) since %d didn't parse "-" successfully. Now it's just lost.