I personally wouldn’t offer “maintenance” for free. In my mind it sounds like the client could request minor changes to be done within this three month period. I would be more specific.
If, however, by maintenance you mean support and bug fixes then it would sound better.
My contract states that changes will be offered at my regular rates while bugs will be fixed within a certain period of time after the project is considered completed. If bugs are found after that period, the fixes will be charged at my normal rates.
I feel that bug fixing should be free for some time since the end product should be a website that works properly and some bugs will often slip through. However, a stated time period will help to make sure the client is enthusiastic about finding bugs in time, preferably before the site is in a production environment.
I agree that you really don’t want to include a broad scope like this in an agreement.
Better to cover on an item you are more responsible for – bugs or missing scope. It’s almost impossible for a site launch without missing something originally discussed or a small bug. Cover those.
If you want to provide some monthly services define them by the client. A client with a CMS could get simple updates easily made while another one with a flash based site could want just as many edits but have it take 3x as long. Hourly caps may also work and get people in the habit of seeing a scope, approving, and even paying for changes.