Simon Says in Scheme
Ideally I'd like to use termcap or terminfo or the like to clear the terminal without shelling out. Alas, it seems Chicken doesn't have an egg for either termcap or terminfo. (It does have an egg for curses, but I consider that to be too heavyweight for just clearing a terminal.)
I'd probably use for-each for iterating through the items in show-sequence, rather than the recursive approach you have:

(define (show-sequence seq)
  (for-each (lambda (x)
              (clear-screen)
              (make-delay)
              (display x)    ;; not write
              (make-delay))
            seq)
  (clear-screen)
  (display "GO!\n"))

Not a huge fan of making a get-player-input function that's exactly the same as read-line. I'd just call read-line directly.
Your definition of make-sequence is quite clever, but it's not very idiomatic. Since you have SRFI 1 loaded, I'd just use list-tabulate:

(define (make-sequence len)  ;; not length
  (list-tabulate len (lambda (_) (random button-count))))

You can simplify player-sequence-matches? by using SRFI 1's every:

(define (player-sequence-matches? seq)
  (every (lambda (x)
           (= (string-&gt;number (read-line)) x))
         seq))


And since Chicken has cut builtin, you can simplify even further:

(define (player-sequence-matches? seq)
  (every (cut = (string-&gt;number (read-line)) &lt;&gt;) seq))

For calculating the total score, I'd rather accumulate the score, rather than use recursion to hold the score. Like so:

(define (simon-says difficulty)
  (let loop ((difficulty difficulty)
             (score 0))
    (define seq (make-sequence difficulty))
    (show-sequence seq)
    (if (player-sequence-matches? seq)
        (loop (add1 difficulty) (add1 score))
        score)))


This way, the function is totally tail-recursive.