For Apache 2.4: "apachectl graceful" (aka "reload") does reload the certificates for me (tested with ubuntu 16.04 using 2.4.18-2ubuntu3).
The caveat: There is a lot of information on the web that says apache requires a full restart instead of a reload to accept new certificates. Since for me a graceful reload was enough I would say it is possible, perhaps even likely that for older apache versions more than a reload was needed once?
You could make a script that first does the certbot renewal and then apachectl graceful. Or just 2 cronjobs, where the apachectl graceful happens after the certbot cronjob.
This problem is not as bad though IMHO: Letsencrypt will renew the certificates up to 30 days before expiry. Personally I restart my servers more often, because my weekly-run ubuntu autoupdater is configured in "/etc/apt/apt.conf.d/50unattended-upgrades" with "Unattended-Upgrade::Automatic-Reboot "true";" and the chance that it will not have an update that makes it want to reboot for full 30 days is pretty low.
If you don't want reboots, you will have to check your other services (postfix, dovecot come to mind if you also have mail on the server) on what they need to accept a new certificate and then add that to your script that starts "certbot renew".