Why is "a" "ac**" false but "a" "ac***" true again? Shouldn't they be all true or all false?
Why is "a" "ac**" false but "a" "ac***" true again?

For "a" "ac**", the matching process is:
a > a: true;
a > a  c: false;
a > a  c* (empty): true;
a > ac  ** (empty): false;
For "a" "ac***", the matching process is:
a > a: true;
a > a  c: false;
a > a  c* (empty): true;
a > ac  ** (empty): false;
a > a  c*(empty)  ** (empty): true;
The key is that there exists some division of p matching s, not for all divisions.