Given how you've described the end result of what you're looking for, here's how I might choose to handle it:
First, I'd have a channel of sponsors. Custom fields like logo, description, URL - whatever you need for each one.
Second, I'd have a channel for weekly sponsors (or simply a custom field in your weekly setup) that is nothing more than a weekly identification of which sponsors apply for THIS weekly edition using Playa.
The total results of the Playa field would be your total count of sponsors in a given week. That would determine the requirements of the grid for displaying the sponsors - presumably you would have a maximum as determine by what fits naturally across the top where you have them positioned currently - let's use four as an example.
{exp:channel:entries channel="weekly_sponsors" limit="1" disable="categories|member_data|pagination"}
<p>This week, made possible by:</p>
{exp:playa:children channel="sponsors"}
{if count == "1"}<ul class="weekly_sponsors {total_results}">{/if}
<li><img src="{logo}" alt="{title}"/></li>
{if count == total_results}{/if}
{/exp:playa:children}
{/exp:channel:entries}
As I mentioned, this could simply be a playa field in your weekly entry setup.
Because you would have a logical maximum number of sponsors to fit across - in this example four, you would just need the width of each LI to adjust, depending on the total_results class applied to the list. So without any margin or padding applied, it might be something like this:
.weekly_sponsors.5-sponsors li {
width: 20%;
}
.weekly_sponsors.4-sponsors li {
width: 25%;
}
.weekly_sponsors.3-sponsors li {
width: 33%;
}
.weekly_sponsors.2-sponsors li {
width: 50%;
}
.weekly_sponsors.1-sponsors li {
width: 100%;
}
I'm not suggesting your widths would actually always divide evenly - this is just an example. But that's likely how I would handle it to future proof it as much as possible. This would also give you the ability to break the list and create a new row if needed following the same pattern.
Hope that helps.