I believe, this could be achieved with any method you've mentioned:
Page type or event - I grouped them together as event is a page type. To implement this you might use User Contribution web part + you will need to configure security, which sometimes might be tricky: you'll have to allow public user to create event, or any other page type, you need.
Custom Table - you can't apply Kentico Workflow to it, but I'm not sure you actually meant Kentico Workflow, maybe you want to use some other approach. So you'll have to configure permissions again, but for custom tables module + particular custom table as well as implement some user control/web part that will allow users to create a record. You might find a nice approach how this could be done, sample and appropriate web part here.