Custom fields should be available on the Activity itself, called Activity pointer. The reasons are: The same function is needed for all Activity types, so we don't need to make multiple fields with the same name and beaviour on all types. It might be a category, a comment, a relation, whatever. But the most important value is in views; Dashboard views for activities. One common Activity view should cover all common fields.
Today we have to create a view for every Activity type. Dashboards get too big, and users loose overview.