Would love some suggestions on how to handle this. Each email we send is associated with a unique key code made up of a (mostly unintelligible) string of letters and numbers that is different from the Marketo program ID. This key code is used in Marketo but its also used in some of the other systems we use. We have been using that key code as part of the program name but those names get long and messy and we'd rather just use something simpler like the recommended "ES-YYYYMMDD-(program name)" format.
Is there a way to add a custom identifier to an email send that would show up as a column in reporting?
By default the program name must be a unique identifier (you can't have two programs with the same name). Program name is also pretty much the only thing that you can consistently get to display in every type of report (happy to be proven wrong on this but I can't think of anything else that does) - so it sounds like program name meets your needs but the current implementation of it is your issue. Developing a stricter program naming convention is probably going to be your best approach.
There's tons of discussion on here about naming conventions, the main point I think is to ensure it has all of the information you absolutely need and none of the info you don't - keep it concise but meaningful. I use shortcodes and mine are usually formatted "BRAND-REGION-CHANNEL-YYYYMMDD-Short Description", e.g., "GBC-AU-NL-20181030-Oct Newsletter". I know others who don't include brand as they operate only one, but include shortcodes for products or audiences.