I found the problem -- I had changed the system account's e-mail address from "system" to my e-mail address.
The function administration_group_add() calls system_user_id(), and it trys to set creation_user to the returned value.
Here's part of the code from system_user_id()...
begin
select user_id into v_user_id from users where email = 'system';
return v_user_id;
end;
Since there wasn't an e-mail address called "system", the function returned no value; thus, no value was being passed for creation_user in the insert into user_groups
statement in administration_group_add().