Because [font=monospace]$[/font] is a special character in regular expression syntax meaning the end of a line/string, it needs to be escaped, appearing as [font=monospace]\$[/font], for the PCRE engine to instead interpret it as a literal [font=monospace]$[/font] character.
But, because double-quoted strings are being used, PHP itself would normally interpret [font=monospace]$[/font] as a special character indicating the start of variable interpolation, so to have PHP interpret it as a literal [font=monospace]$[/font] character it would usually have to be escaped, and therefore appear as [font=monospace]\$[/font].
So when PHP sees [font=monospace]\$[/font] in a double-quoted string it interprets the sequence as a literal [font=monospace]$[/font]. But now the backslash has been lost before the PCRE engine sees it. So the backslash needs to be escaped; instead of [font=monospace][/font] it needs to be written as [font=monospace]\[/font]. Now PHP will interpret it as a literal backslash and pass it on to the PCRE engine.
There's now a potential bug in the sample code: now that PHP is interpreting the backslash-backslash pair as a literal backslash character, it's now back to interpreting the dollar sign as (potentially) the start of a variable. Fortunately in this particular instance, it doesn't, but if it did the whole thing would break:
$text = "The wholesale price is \$US89.50.";
echo preg_replace( "/\\$US\d+\.\d{2}/", "[CENSORED]", $text );
To avoid this, there should have been three backslashes there: the first escaping the second and the third escaping the dollar sign, so that the second backslash and the dollar sign both pass unmolested to the PCRE engine for interpretation as specifying a literal dollar sign.
(This is a major reason why I don't use double-quoted strings around regular expressions.)