If I'm not mistaken: this exception can never, ever, occur, since $this->bundles is initialized to array() at the beginning of this function.
The only way this could occur is if registerBundles() function creates the same bundle multiple times (and it would make sense to add this failsafe check in there then).
Other than that; $this->bundles is not (at this moment) $key => $value (see registerBundles); it does not make sense to check isset($this->bundles[$key]).

I'd rather suggest to drop this code & registerBundles, and create something like this instead:

    protected $bundles = array();
    protected function getBundles()
    {
        if (empty($this->bundles))  {
            $bundle = new Symfony\Bundle\MonologBundle\MonologBundle();
            $this->addBundle($bundle);
        }
        return $this->bundles;
    }
    protected function addBundle(Symfony\Component\HttpKernel\Bundle\Bundle $bundle)
    {
        $name = $bundle->getName();
        if (isset($this->bundles[$name])) {
            throw new \LogicException(sprintf('Trying to register two bundles with the same name "%s"', $name));
        }
        $this->bundles[$name] = $bundle;
    }

And substitute all existing $this->bundles usage to $this->getBundles()