CSS would be the appropriate solution. Some suggestions to try:
CSS float option:
.wrapper-class-name .field-item {
width: 33.3333%;
float: left;
}
fieldset {
clear: both;
}
CSS inline-block option:
.wrapper-class-name .field-item {
width: 33.3333%;
display: inline-block;
margin-right: -5px;
}
CSS grid option:
.wrapper-class-name {
margin: 20px 0;
display: flex;
flex-wrap: wrap;
display: grid;
-ms-grid-template-columns: repeat(3, 1fr);
grid-template-columns: repeat(3, 1fr);
grid-auto-rows: auto;
grid-gap: 15px;
align-items: top;
}
*using CSS grid with Drupal in my experience almost always requires updating the markup through template modifications, Drupal tends to add wrapper elements and CSS Grid needs direct descendants.
The problem with this situation is that you are typically viewing form fields like this in an administration theme, so if you're needing to update the administration theme you will need to add your CSS to the administration theme. I think the question may be, do you want to manage the CSS modifications of a contributed theme? Nothing wrong with it, just something to keep in mind.