To learn why smoke and mirrors would be an antipattern, take a look at the Smoke and Mirrors Wikipedia entry. From the article:
Smoke and mirrors is a metaphor for a
deceptive, fraudulent or insubstantial
explanation or description. The source
of the name is based on magicians'
illusions, where magicians make
objects appear or disappear by
extending or retracting mirrors amid a
confusing burst of smoke. The
expression may have a connotation of
virtuosity or cleverness in carrying
out such a deception.
In the field of computer programming,
it is used to describe a program or
functionality that does not yet exist,
but appears as though it does (cf.
vaporware). This is often done to
demonstrate what a resulting project
will function/look like after the code
is complete — at a trade show, for
example.
More generally, "smoke and mirrors"
may refer to any sort of presentation
by which the audience is intended to
be deceived, such as an attempt to
fool a prospective client into
thinking that one has capabilities
necessary to deliver a product in
question.
Often times, smoke and mirrors are used to impress management or customers with a demo in order to get/keep funding, but there is no real code underneath. This works for a time, but, ultimately results in other anti-patterns (spaghetti code, the blob, etc) in order to try to get something real once it is actually asked for.
Projects that begin as Smoke and Mirrors tend to end horribly. Like a relationship, if you develop your code on lies, everything will fall apart in the end.