let rec*の箇所読みましたが、
そもそも<variable>の複数回定義を許してないので
インタプリタの動作は実装依存ってことでしょうか

R6RSの処理系をいくつか入れてテスト(とりあえずすぐインストール出来たのだけ)
テストコード
(define x 5)
(define (f a) (+ a x))
(define (g a) (f a))
(define (f a) (- a x))
(define x 7)
(f 35)

結果
R6RS
Ypsilon 28
Larceny 28
Racket 28

schemeインタプリタは実際の所、一貫してますね