The argument that the Z3 is universal "was an impressive party trick, but diverged entirely from the way the machine was designed, how it was actually used, or indeed from anything that would have made sense in the 1940s."
The Z3 lacked conditional branching. The hack to make it technically a universal Turing machine is to execute all possible branches of a program and discard the undesired branch results, so the end result is the same as if it had genuine branching abilities. But of course that'd drastically drive up the computation time if you actually tried to use the machine in that way.
One of the things about Turing-completeness is that it is very easy to become accidentally Turing-complete, since the conditions you need for completeness are very weak. (Famously, C++ template instantiation is unintentionally Turing-complete).
Z3 is an example of an accidentally Turing-complete machine.
Source: ENIAC in Action p255.