The webserver allows parent environment variables to be inherited by the child process. That's how CGI works btw. It's just that Hiawatha needs to be started by root (to bind ports below 1024) and that account might contain environment variables you don't want to be present in every CGI run (security issues). That's way the environment is cleared. To set environment variables for the CGI process, use the SetEnv option.
VirtualHost {
...
SetEnv Path = /usr/local/bin;/usr/local/sbin
}