scaleもzmapも、入力範囲と出力範囲を指定し、その範囲に従って数値変換してくれるオブジェクトですね。zmapは直線変換のみで、scaleは指数変換が可能です。もっとも、scaleのデフォルトの指数係数は1.0で直線変換なので、zmapは要らないじゃん、って気もするのですが、でもscaleはスケーリングで、zmapはマッピングなのです。文字通りですが、この違いが何かと言うと…
scaleはスケーリング(比率計算)なので、入力範囲を超える数値が入力された場合は、出力範囲を超える数値が出力されます。一方、zmapでは、入力範囲外の数値が入力された場合には、出力範囲内に収まるようにクリッピングされます。つまり、zmapでは出力範囲外の数値や出力されません。ということは、数値変換はしなくてもクリッピングのためにzmapを使っても良いわけですね。

それから、入力範囲または出力範囲の指定で大小関係が逆である(第1アーギュメントが第2アーギュメントよりも大きな値である、または、第3アーギュメントが第4アーギュメントよりも大きな値である)場合に、scaleはそのままの比率に従って変換を行いますが、zmapは大小関係が正しくなるようにアーギュメントの値を読み替えて変換します。
当然のことながら、どちらのオブジェクトを使うかは適所適材ですから、それぞれの特徴をつかんでおくことが大切ね、っとこれまた学内ネタでしたが、こーゆー小ネタをブログに書くのはどうなんでしょうね?? もちろん、ワークショップ自体はもっと大きな枠でやっていて、そこから小ネタにしやすいことだけを書いているわけなのですが….
まさに探していた情報で助かりました。ありがとうございます!