As jlliagre mentioned, zombies are already dead. They consume no resources aside from their entry in the process table. Whatever memory they were using has been returned to the system. Whatever descriptors they held open have been closed. Etcetera.
A zombie occurs when a process does not collect the exit information of a child. If you are seeing a lot of zombies, then you have a poorly coded program running on your system. If you kill this program (the parent of the zombies), the zombies will be adopted by init (PID 1) and it will take care of them.
So, a less drastic workaround than rebooting the system would be to restart the application that created those zombies. I don't use solaris, but from what I just read, preap as suggested tamitot allows you to avoid a restart of even a single process. Best solution of course is to fix the program which spawned the zombies in the first place (although I realize that sometimes this is not possible).