I wonder why most robotic arms use large J2 (shoulder) motors rather than counterweights. What sort of complexity do they add to the design beside increase in overall weight? In fact, rather than using extra weight as counterweight, the J3 (elbow) motor could be shifted down past J2 and use J3 motor as counterweight, but why isn't it done?
The weight of the motors is less then the weight of the gears and bearings in the joint. So moving the motors only not that advantageous. Moving the gearboxes can be done, but bearings still need to be left at the joint. If motors and gearboxes are moved, but bearings are not, then additional bearings are required for the "moved" gearboxes and some kind of transmission shaft or mechanism will also be needed, which adds further weight.
Many large robots include a hydro-pneumatic "spring" at J2 instead of a mass. This has more flexibility than a mess, since the force of this spring can be more easily adjusted (by increasing/decreasing the pressure). Usually this is set up based on the intended load of the robot.
As for the J3 axis, moving J4-6 behind J3 is currently more popular then moving J3 behind or next to J2. Some manufacturers favour this approach, but even if all 3 motors are placed behind J3 a counterweight might still be needed, as this image shows. The black element behind the 3 motors next to J3 is a counterweight. this counterweight is optional, based on the intended load. (Please also note the hydro-pneumatic spring next to J2).