Hola @fernando_pro,
Los compañeros están en lo cierto. El problema radica en la persistencia de los datos. En PrestaShop, cuando trabajas con objetos ObjectModel (como Currency), asignar un valor a una de sus propiedades ($currency_obj->conversion_rate = ...) solo modifica ese valor en la instancia del objeto actual en la memoria. Para que ese cambio se refleje en la base de datos, debes invocar explícitamente el método update() del objeto.
Tu postProcess debería quedar así:
class AdminMyEcbUpdateController extends ModuleAdminController
{
// ... constructor y renderForm omitidos ...
public function postProcess()
{
if (Tools::isSubmit('submitUpdateEcbRates')) {
$currencies = Currency::getCurrencies(true, true);
$ecb_xml = simplexml_load_file('https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');
if ($ecb_xml) {
foreach ($currencies as $id_currency => $currency_data) {
Con esta modificación, cada vez que encuentres la divisa y le asignes la nueva tasa, se guardará en la base de datos. Sin embargo, para una solución más robusta, que gestione errores de conexión, programaciones automáticas (cron jobs) y compatibilidad con futuras versiones de PrestaShop sin tener que mantener código personalizado, te recomendaría usar esta solución probada. Está específicamente diseñado para esto y te ahorrará problemas a largo plazo.