I think the major reason of short roster is so common in strong teams is that the strong teams usually have strong starting-5 with very high TSP and salaries, to maximize their competiveness and their team record. The 6th man is usually decent in their squad ( with good ability and high salaries ) . Then the salary in top teams is already very high, which is probably very close to their weekly income. To maintain their financial situation healthy, their bench players usually have low salary and skills to preserve the salary space for their top players who play on the court longer.
The top teams use less players is to minimize the effect of their poor bench players with poor skills.
I think this is very hard to be fixed, as short roster problem has become a common thing and the key of success of the top teams. Feel free to give your suggestions here!