Spread Objects does what it says : it spreads the selected objects on an evenly spaced grid.
It takes care of calculating the number of columns/rows and the spacing needed between each object and another.
From the Object menu select "Spread Objects" or "Spread Objects (keyframed)". The first only spreads the objects, and the latter adds initial position and final position keyframes for animation
Spread Object is a free add-on, the price here is just symbolic and 100% of the revenue is donated to the Blender Development Fund.
Github link (free) : https://github.com/abdoubouam/spreadobjects