rectform operates on a list by computing two lists - one containing all real parts, one containing all imaginary parts - and then combining them using list arithmetic. But it doesn't bind $listarith to t, so the result depends on $listarith.
polarform, on the other hand, checks for "mbags" and uses (mapcar #'$polarform ...) to create a bag containing the polar form of each element.
(%i1) rectform([1,2,3]), listarith:true;
(%o1) [1, 2, 3]
(%i2) rectform([1,2,3]), listarith:false;
(%o2) [1, 2, 3] + %i [0, 0, 0]
(%i3) polarform([1,2,3]), listarith:true;
(%o3) [1, 2, 3]
(%i4) polarform([1,2,3]), listarith:false;
(%o4) [1, 2, 3]
Maybe this is by design, but it's not documented.
rectform's approach also ends up callingrisplittwice on the same argument!Hmm, I don't see that when I trace
risplit:oops