What about renaming the method in Koha::S::R::Biblio to ->marc_xml_metadata (adding the conditions in it) and Koha::Biblio->metadata to ->marc_xml (make it returns the MARX XML directly)? See bug 22700 for the discussion. However it will break (again) the reports people already have.
It should return a Koha::Biblio::Metadata object, which is an envelope containing info about the schema, format, etc. Maybe you mean a method in Koha::Biblio::Metadata
The problem IMO is that we have a DB structure to allow 1-N but it's not clear (reading the code) that we support only one. I think we should have "marc_xml" explicitely written in the name of the subroutine, to make it clear. Reading the code I'd say that even if you have a biblio_metadata.format with something else than "marcxml", it will be used anyway.