Spreadsheet::Read also uses Spreadsheet::XLSX under the hood. Buggy or not, I found that Spreadsheet::XLSX handled the euro symbol without issue via Spreasheet::BasicRead.
I think the heart of the problem, as I've discovered, is that the modules are trying to applying a custom format improperly and there is really no reason for these modules to try to apply the custom formatting because all it does is insert some padding into the cell. To address this, I'm just going to strip out the weird formatting command in the format: _€, and not worry about this anymore.
All the XLSX modules, with the exception of Spreadsheet::Read, haven't been touched in about 4 years and have long issue queues. But Spreadsheet::Read relies on modules that are not maintained.