This is because the default ivy--regex-function, ivy--regex-plus, considers everything after ! to be a negated pattern. See (ivy) ivy--regex-plus.
ivy--regex-plus does not, however, understand escaped exclamation marks, such as "add-class-path\\!, in the same way that ivy--regex-ignore-order does. I don't know whether this is deliberate (@abo-abo ?), but IMO it's a deficiency.
Example where the change is relevant: in ivy.el, call `swiper' with
input "defun!ivy". There is only one match. Unlike before this change,
"defun" is highlighted only for the match, not anywhere else in the
Another example of useful nagation in ivy.el: "ivy len!--".