むむ

覚えてないのか理解が微妙なママなのかも不明ですが、フォロー頂いた事項について確認してみます。
頂いたコメントは_一個目はスタックにつんで二個目は VAL0 に入れる (VAL0 に関数オブジェクト、スタックに関数の引数) から、このようなコンパイル結果になると思います_との事。
これは

     0 LREF2-PUSH               ; x
     1 LREF(1,5)                ; a
     2 TAIL-CALL(1)             ; (a x)
     3 RET 

の一個目二個目を指してる、と見て良いのだろうか。そーゆー意味では

(disasm (lambda (a b c d e f) (lambda (x y z) (a x y))))

だと x と y が push されて a は val0 に入ると見て確認

gosh> (disasm (lambda (a b c d e f) (lambda (x y z) (a x y))))
main_code (name=#f, code=0x80d68b0, size=3, const=1, stack=0):
args: #f
     0 CLOSURE #<lambda 0>      ; (lambda (x y z) (a x y))
     2 RET 
internal_closure_0 (name=#f, code=0x80d7b40, size=5, const=0 stack=5):
args: #f
     0 LREF2-PUSH               ; x
     1 LREF1-PUSH               ; y
     2 LREF(1,5)                ; a
     3 TAIL-CALL(2)             ; (a x y)
     4 RET 
#<undef>
gosh> 

うむ。では逆に

(disasm (lambda (a b c d e f) (lambda (x y z) (x a y))))

だと LREF-PUSH(1, 5) されて LREF1-PUSH されるのか。確認。

     0 LREF-PUSH(1,5)           ; a
     1 LREF1-PUSH               ; y
     2 LREF2                    ; x
     3 TAIL-CALL(2)             ; (x a y)
     4 RET 

うーむ。この根拠は如何に、と思いつつそこまでナニするリキがあるかどうか。