It doesn't directly address your issue, but does the answer to this question help you at all?
Specifically, it addresses using the custom execution command option on your project. You can define a custom command to execute your application in the debugger:
Open 'Project Options', got to the 'Run>Custom Commands' section, add a custom command for 'Execute'
It also mentions the Debugger.Break behaviour:
If your app is running inside the Mono Soft Debugger with Mono 2.11 or later [...], it will set a soft breakpoint for the soft debugger and work as expected
EDIT:
You can call a URL on an already running Mac app... Can you set up a handler to trap the event, set a breakpoint inside and check that your URL is calling the already-running app properly? It might give you a clue to the behaviour or a way to further debug. Something like this:
public override void FinishedLaunching(NSObject notification)
{
NSAppleEventManager appleEventManager = NSAppleEventManager.SharedAppleEventManager;
appleEventManager.SetEventHandler(this, new Selector("handleGetURLEvent:withReplyEvent:"), AEEventClass.Internet, AEEventID.GetUrl);
}
[Export("handleGetURLEvent:withReplyEvent:")]
private void HandleGetURLEvent(NSAppleEventDescriptor descriptor, NSAppleEventDescriptor replyEvent)
{
// Breakpoint here, debug normally and *then* call your URL
}