History expansion is the stuff you can do with
! to retrieve values from history and modify them in various ways. Those modifiers are so useful that Zsh has added them to its parameter expansion. Doing a search and replace with
:s/old/new/ is an example of a modifier that originated on the history side of things, as are most of the ones that involve a colon followed by a letter.
But the history expansion takes place in a different phase of evaluation and doesn't expand any nested parameter values, which is why your attempt didn't work - the value of SCMROOT doesn't contain the literal string "$HOME", so nothing is changed.
For general search and replace, parameter expansion has its own substitution syntax - ${param/old/new} will replace only the first instance of "old" in the string, while $[param//old/new} will replace all of them. Unlike with :s, you can't change the delimiter and so have to escape any literal slashes in either the search or replacement values. But any nested parameters will be expanded (and slashes in the expanded value taken literally), so your attempt would work.
However, if all you want to do is remove stuff from the beginning or end of a parameter value, there's targeted syntax for that, which Peter has supplied. In general, ${param#prefix} will remove stuff from the beginning of the string, and ${param%suffix} will remove stuff from the end. The stuff to remove can be specified via a wildcard pattern (not a regex, but a file glob), in which case a single # or % will remove the shortest thing that matches while a double ## or %% will remove the longest.