The ideal way is to add gecko driver to PATH variable. This way it will help your code be much more flexible and not dependent on any folder structure.
If you use System.setProperty, you will have to create a folder in your project path and place your driver there. You will even end up adding driver binary file to your repository management system like Git. If you update your driver, the old driver will take up space in your repository. Also, you will have to handle code for Linux and Windows differently.
So, if you simply rely on PATH, the operating system and Selenium library or server will take care of rest of the part.
I suggest you to go with PATH variable.