Chibi's behavior, while perhaps surprising, is actually conformant. The key to the situation is the phrase "is an error", which in the world of Scheme standardization specifies a situation that is not defined by the standard. Implementations, therefore, can do what they like, and portable code cannot rely on any particular behavior. In particular:
Chibi silently performs the assignment;
Chicken prints a warning and performs the assignment;
Larceny silently ignores the assignment;
Gauche prints a warning and ignores the assignment.
Other conforming behaviors are also conceivable, such as crashing the program. The reason for allowing this flexibility is to permit implementations to trade off between greater safety and greater efficiency.
In cases where an implementation must signal an error, the phrase "an error is signaled" is used.
It's worth pointing out that it is not an error to rebind an imported identifier, so that (let ((+ 0)) +) will evaluate to 0 in all Schemes, as will even odder-looking things like (let ((lambda +)) (lambda 2 -2)).