How can I customise the presentation of custom field in events?
In newer versions of CiviCRM (around 4.7.20 and higher) you can mark a custom field set as not public.  This will hide the custom field set from your event page.  Then you could use a buildForm hook to include a template of your choice; see the CiviCRM dev guide Resources Reference for details.