This is not a bug, it's a consequence of how clojure works and how destructuring is implemented.
The {:keys [foo bar] :or {foo "foo"}} structure doesn't exist after macroexpansion, the two instances of the symbol foo are expanded into a single expression roughly equivalent to