If the maintenance is for the same system that a team is working on, then I'd continue as-is. The Product Owner should be in a position to prioritise the work accordingly and negotiate it into Sprints.
If the maintenance includes different systems than the one being worked on by a team for their project, then I'd be looking at setting up a dedicated team for maintenance. I'd set it up as a Kanban for handling small and repeatable changes spanning multiple systems.
If management won't accept the creation of a dedicated team, then I'd be looking to reserve time as you suggest. The PO would therefore still avoid being exposed to maintenance requirements that are outside of product scope. However, reserving time is a second best option because there are invariably "maintenance" requirements that end up being fast-tracked (emergency work) and which can potentially compromise the Sprint Goal. I wrote an article on this subject last week: http://agiletv.com/the-agile-respon...1-incident