You don't pass monobehaviours, wallabie. You choose a game object so that you can then choose a property that's on one of the scripts attached to that game object. The event delegate parameters bind to properties. They don't bind to explicitly passed values in 3.5.6 -- mainly because there is no way to save an arbitrary value in Unity. It can only serialize specific (and a very limited number of) types -- int, float, vector, string, rect, etc. The problem is that -- and I emphasize -- they must be explicit. Ie: actually defined as the final type -- int, float, etc. I can't say "Unity, save this object that may be an int, float, or something else". Unity doesn't work like that.
I will most likely add a work-around that saves everything as a string later so that this is possible. It won't be pretty or particularly fast, but it will get the job done.