If an implementation allows arbitrary keywords to be syntax-parameterized, referential transparency of macros is violated. E.g., some macro, say `when` may expand into code involving `if` and would break if `if` were syntax-parameterized.
(define (print x . rest)
(apply display x rest)
(newline))
(define-syntax foo
(syntax-rules ()
((_ body ...)
(begin
(define-syntax-parameter it (syntax-rules ()))
(syntax-parameterize
((it (syntax-rules ()
((_) "hello world"))))
(print it)
body ...)))))
(let ((it 10))
(foo (print it)))
The final expression would first expand into
(let ((it 10))
(begin
(define-syntax-parameter it* (syntax-rules ()))
(syntax-parameterize
((it* (syntax-rules () ((_) "hello world"))))
(print it*)
(print it)))
where `it*` stands for the renamed `it`. The expression `it*` in the line `(print it*)` is now a syntax error because `it*` is not valid syntax for the syntax-rules syntax transformer associated with `it*` (syntax-rules do not allow identifier syntax). In other words, you get again undefined behaviour in R7RS.
PS Unless you have specific reasons to stick to R7RS, you will probably be more helped by switching to R6RS, which doesn't have all this undefined behaviour that is in R7RS and where experimenting with specific implementations doesn't tell you much about the semantics.