Yii2 version is incomplete. Regexp special characters include also 
\ + ? ^ { } = ! < > | : -
And while ? is designated url separator and <,>,!,- have a very special use case, I personally opt for generality to avoid unforseen boundary-case complications.
One can, however, opt to replace all of said characters with substitution table, but that does create complications for named parameters (since <,> and : are special characters). So I feel that preg_replace_callback is required in this case anyway. And preg_quote is not much slower than strtr.

Primary point of this given exercise, as I see it, is to avoid asymmetry in encoding and decoding urls with default CUrlRule. preg_quote on parts that are not named parameters does just that.

And as I said before, I do not find speed a giant concern, since url rule should be cached anyway, and basically this code is executed only once for each given ruleset. That is not terribly noticeable in any perceivable application.

I agree about the name though. escapeRegexpSpecialChars sounds reasonable.