Actually the vSphere SDK for Perl should be able to do this. In fact, one of the included William Lam scripts, vmdkManagement.pl, does exactly this.
vmdkManagement.pl --server <vCenter> --username <me> --operation add --vmdkname <filename.vmdk> --vmname <VM> --datastore <datastore>
Problem is, it always adds the disk to controller 0. When I edit the Perl script to use controller 1 (or any other controller), it fails.