An id that has the same binding as a literal-id matches a syntax object that is an identifier with the same binding in the sense of free-identifier=?. The match does not introduce any pattern variables.
When you use read-syntax, you get a syntax object with empty lexical context. However, load that you are trying to match against is load from #lang racket. Therefore, they don’t match according to free-identifier=?.
There are a couple of possibilities to make them match.
(1) Add the current lexical context to the syntax object. This can be done by using replace-context. E.g.
Note that (2) and (3) are essentially equivalent (resulting expr has empty lexical context), but (1) is not (resulting expr has the same lexical context as #'here). Depending on what you want to do, one might be more appropriate than another.