While 制限 seems rather straightforward, the others don't seem as easy to pinpoint to me. What are the differences, and in which cases should I one over another?
制限 has a feel of externally imposed man-made restriction, such as "speed limit" (速度制限), "my doctor isn't letting me drink" (医者に飲酒を制限されている).
In contrast, 限界 isn't an external limitation but rather because of inability or lack of capability. "this car can only go up to 75mph" (この車は120km/h位が限界) "I can't run more than 5km" (僕は走るのは5kmが限界)
限度 is closer to 制限. They both have some idiomatic usages, but aside from that I can't really explain what are the differences. For example, limit in speed is 速度制限 while limit in the amount of loan is 融資限度 and the maxiumum depth you can dive is 潜水限度. Perhaps 制限 has a legal / inflexible feel to it?
Finally, 限り also refers to 限度-like limit, but it is more often used to decorate other nouns and verbs, such as "today's special" (本日限り), "grass field all around you" (見渡す限りの草原), "give it the old college try" (力の限り戦う) and this is a use that other 3 words cannot do.