We have been struggling with this and solved it by having a simple python library built around the arcobjects metadata functions. It's based on a xml-file where the metadata values have been replaced with keywords. You can use these keywords in your python code to get or set the value of a metadata field. Code woud look something like this:
import dataprocessing
DP = dataprocessing.create()
md = DP.OpenMetadata("C:/MyShapefile.shp") # Works also on geodatabases
myKeyword = "%FGDC.abstract" # Keywords have to start with '%' but the rest is up to you
if md.GetValue(myKeyword) == "Not what I want":
md.SetValue(myKeyword, "New value that suits me better")
The tool can be found here:
http://www.aris.nl/dataprocessing_arcgis and is freely available.
The version on the website is for arcgis 9.3. An arcgis 10 version will be available but it will no longer be free.
(Full disclosure: I work for a dutch government agency where we had the current version of this tool built partly from taxpayers money and partly from time donated by the programmer. That's why it's available for free but not open source. As of 2013 we will not be funding any new versions. I'm not making any money out of it in any way. I just hope it gets put to more use.)