The rc.local script has the advantage that it runs at the end of the normal startup sequence. If you need most everything else started first rc.local is a better place for it. Disadvantages of rc.local are that it can grow in complexity quickly if it is used for too many things.
While cron works for this it may not do what you want by default with errors. It's sequence in startup may also vary a bit from system to system.
Finer control of sequence and error handling can be had by writing your own systemd units or init scripts. This is what I would consider the "proper" way and it has many advantages over both rc.local and cron.