However, for this to work I need the origin to be at half max sizes (which works with cubes, but with other figures it´s different), which may not always be the center. So one solution is to move the gameObject´s origin to that position, but it´s kinda tedious to do this with every object.
So again, is there a way to calculate the distance between the origin and the object´s edge?

I think there is not. By the simple way, distance only can refear between 2 points, not 1 point and 1 plane or line… What you can do is create a empty object as child at the edge and mesure the distance between origin and that empty child.

You could get a list of the vertices from the MeshFilter, then you have the local position of each vertex. You can use Transform.TransformPoint() to calculate their world space, then use a Comparer (which internally uses Vector3.Distance()) to sort the list by distance and take the last element of the list. This should be your furthest edge.

Thanks to both for your answers, but I accidentally found my own solution. The answer is not to calculate the distance between the origin and the edge, but to move the origin to the center of the largests points. That way, that distance will always be size.x / 2. Do this with every object and also make sure the y axis are aligned.