A página man do expect diz:
Upon matching a pattern (or eof or full_buffer), any matching and previously unmatched output is saved in the variable
expect_out(buffer)
.
Isso significa que você só receberá os caracteres desde o último "Mais" .
Suspeito que você queira o comando log_file
:
#!/usr/bin/expect -f
set timeout 300
set SWITCH [lindex $argv 0]
spawn ssh -o "StrictHostKeyChecking no" $SWITCH -luser
match_max 100000000
expect "*assword:"
send "password\r"
expect "*>"
log_file /some/log/file
send "show run\r"
expect {
"*More*" {send -- " ";exp_continue}
"*>" {send -- "exit\r"}
}