Your example defines the value b as shorthand for a concatenation. It gets passed as the bound variable to the quantifier Exists(b, a == b). Quantifiers expect a list of basic constants, such as a, b, c below, but not compound expressions, such as d. Below is a version of your puzzle that gets processed:
a = BitVec('a', 8)
b = BitVec('b', 4)
c = BitVec('c', 4)
d = Concat(b, c)
prove(ForAll(a, Exists(b, a == d)))