I'm a fan of the modular layout of ZendFramework. It means that everything can remain in a specific folder structure.
For example, I know that all public scripts are in a module called 'default' and all user authenticated scripts are in 'account' and obviously there's something like 'admin' or 'administration' in there also.
Regardless of how you lay it out, using modules is great. I took things a bit further and created a plugin to manage the layout for me. This means I can create multiple layouts, or just leave the single 'default.phtml' layout.
The way this works is this. A path of /account/settings/password would resolve to the passwordAction within the SettingsController in the account module. In this case, the plugin would look first for a layout located in:
/account/settings/password.phtml
If one couldn't be found then it'd look for:
/account/settings.phtml
If one couldn't be found then it'd look for:
/account.phtml
If account.phtml doesn't exist, then the layout would fall back to 'default.phtml'
Here's how you go about setting it up.
First, add this '_initPlugins' into the bottom of your main Bootstrap file.
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initPlugins()
    {
        // Control module:controller:action layout plugin
        $front = Zend_Controller_Front::getInstance();
        $front->registerPlugin(new App_Plugin_Module());
    }
}
Now, use this class below, feel free to rename it or play with it to make it work how you need it to.
<?php
/**
 * Scans the layout directory and turns it into a modular base
 * Layout decision will be based on the following:
 *
 * First:     /{module}/{controller}/{action}.phtml
 * Second:     /{module}/{controller}.phtml
 * Third:     /{module}.phtml
 *
 * All layout folders / files need to be in lower case.
 *
 * @copyright 2012 Roger E Thomas
 * @author Roger Thomas
 *
 */
class App_Plugin_Module extends Zend_Controller_Plugin_Abstract
{
    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
        $module = strtolower($request->getModuleName());
        $controller = strtolower($request->getControllerName());
        $action = strtolower($request->getActionName());
        $layout = Zend_Layout::getMvcInstance();
        // Layout path as defined in your application.ini
        $layoutsDir = $layout->getLayoutPath();
        if ($controller == "error")
        {
            $layout->disableLayout();
            return;
        }
        if (file_exists($layoutsDir . DIRECTORY_SEPARATOR . $module . DIRECTORY_SEPARATOR . $controller . DIRECTORY_SEPARATOR . $action . ".phtml"))
        {
            /**
             * /{module}/{controller}/{action}.phtml
             */
            $layout->setLayoutPath($layoutsDir . DIRECTORY_SEPARATOR . $module . DIRECTORY_SEPARATOR . $controller);
            $layout->setLayout($action);
        }
        else if (file_exists($layoutsDir . DIRECTORY_SEPARATOR . $module . DIRECTORY_SEPARATOR . $controller . ".phtml"))
        {
            /**
             * /{module}/{controller}.phtml
             */
            $layout->setLayoutPath($layoutsDir . DIRECTORY_SEPARATOR . $module);
            $layout->setLayout($controller);
        }
        else if (file_exists($layoutsDir . DIRECTORY_SEPARATOR . $module . ".phtml"))
        {
            /**
             * /{module}.phtml
             */
            $layout->setLayout($module);
        }
        else
        {
            if (file_exists($layoutsDir . DIRECTORY_SEPARATOR . "default.phtml"))
            {
                $layout->setLayout("default");
            }
            else
            {
                // trigger an error so that a developer can locate this error.
                trigger_error("<b>{" . __CLASS__ . "}</b> Layout not found, if warnings are disabled, no layout will be used.", E_USER_NOTICE);
                $layout->disableLayout();
            }
        }
    }
}
