They are semantically the same in Scheme and Racket. In both, you need to know what the return looks like in order to use it.
values connected to call-with-values , and special forms like let-values are just syntactic sugar with this procedure call. The user must know the form of the result in order to use call-with-values in order to use the result. Returns are often made on the stack, and the call is also on the stack. The only reason for supporting the values in the Scheme would be that there is no overhead between the return of the manufacturer and the consumer call.
With cons (or list ), the user needs to know what the structure of the return data looks like. As with values , you can use apply instead of call-with-values to do the same. As a substitute for let-values (and more), it is easy to make a macro destructuring-bind .
In Common Lisp, this is completely different. You can always use values if you have additional information, and the user can still use it as a normal procedure if it only wants to use the first value. Thus, for CL, you will not need to supply quotient as an option, since quotient/remainder will work just as well. Only when you use special forms or procedures that take multiple values, the fact that the procedure returns more values works the same way as with the Schema. This makes values better choice in the CL than Scheme, since you avoid writing one instead of several procedures.
In CL, you can access the hash as follows:
(gethash 'key *hash* 't) ; ==> T; NIL
If you are not using a second return value, you do not know if T was the default value or the actual value. Here you see the second value indicating that the key was not found in the hash. Often you do not use this value, if you know that there are only numbers, the default value will already be a sign that the key is not found. In Racket:
(hash-ref hash 'key #t) ; ==> #t
The racket failure-result may be thunk, so you pass by, but I'm sure it will return several values, and if the values work, as in CL. I guess that a more household with a CL version and schema, being a minimalistic language, might not want to give developers extra work.