That seems fine, though I'm not sure that I see what it buys you if people can add their own profiler implementation anyway.  In either case I think you will still need to add an additional (potentially optional) argument called "category" or something, in order for the aggregation to be possible.

Also there will need to be a callback to the profiler after an "interesting" unit of work is complete; e.g. after the request is processed in http handler you would need to call some sort of "summarize" method that will allow the profiler/listener implementation to do something with the aggregated data.