I'm glad you mentioned /var/run/novell/groupwise/, its not something I thought about before. In testing what you say, you are right, my method of searching for grpwise status is flawed. The PID is only written to the [agent].PID file when the process is started and is not again updated until the process is restarted in the event it fails. I should be searching for the gwia and webacc processes more specifically. The status is incorrectly returned when only one process gwia or webacc is 'dead.'
It looks to me like the grpwise script checks to see what processes it has the ability to start are running or not and only restarts the one(s) that are not running. If I kill gwia and run /etc/init.d/grpwise start it will only start the gwia and won't bother webacc. The possibility for duplicate processes is rather small in my opinion.
I'll have to revise the script to search for gwia and webacc. Thanks for bringing this to my attention!