Darüber bin ich auch schon mal gestolpert. $config['default_host'] kann ein Array entgegen nehmen, $config['smtp_server'] dagegen nicht.
Wenn du nur Mailserver ansprechen möchtest, bei denen der Prefix der Domain des SMTP-Servers gleich ist, kann man das auch so machen:
$config['default_host'] = array(
'ssl://imap.web.de' => 'WEB.DE',
'ssl://imap.gmx.net' => 'GMX',
'ssl://outlook.office365.com' => 'Outlook.com',
);
$config['smtp_server'] = 'tls://smtp.%z';
%z - IMAP domain (IMAP hostname without the first part)
Netcup hat da aber leider ein anderes Schema. IMAP- und SMTP-Server heißen beide mx????.netcup.net. Man könnte sich da jetzt eigene Subdomains anlegen, dann kann es aber Probleme mit dem Zertifikat geben.
Oder man legt sich extra Subdomains an und lässt roundcube dann immer die entsprechende Config laden.
Also z.B. webmail-gmx.example.com und webmail-web.example.com
Und in der Config dann:
$config['include_host_config']['webmail-gmx.example.com'] = 'gmx_config.inc.php';
$config['include_host_config']['webmail-web.example.com'] = 'web_config.inc.php';
In gmx_config.inc.php und web_config.inc.php setzt man dann entsprechend $config['default_host'] und $config['smtp_server'].
Bei deiner Lösung sehe ich nämlich ein Problem: Was ist wenn sich mehrere gleichzeitig einloggen? Die überschreiben sich dann doch gegenseitig die server.conf.