Nevermind -- it looks like puterboy already came up with a workaround, but posted it in another thread (
http://plugcomputer.org/plugforum/index.php?topic=4330.0). In my case, the underlying issue was that I left the two relevant firmware files (helper_sd.bin and sd8688.bin) in /lib/firmware/mrvl, and when the plug reboots, it automatically tries to access them during bootup and the wifi gets screwed up.
My ugly but apparently functional solution is to put the firmware files into /lib/firmware/mrvl, switch from AP to client mode, then immediately DELETE the files out of /lib/firmware/mrvl so they're not there on the next reboot. For completeness, here's the boot-time wifi setup script I'm using:
#!/bin/sh
# GuruPlug wireless client setup script
# Copy the firmware files to where they're expected
cp /root/firmware/helper_sd.bin /lib/firmware/mrvl/
cp /root/firmware/sd8688.bin /lib/firmware/mrvl/
# Deactivate access point functionality
rmmod uap8xxx
# Activate the wireless modules
insmod /root/wifi/mcypt.ko
insmod /root/wifi/sd8xxx.ko
# Delete the firmware files - wifi get screwed up if
# they're there when the plug reboots
rm /lib/firmware/mrvl/helper_sd.bin
rm /lib/firmware/mrvl/sd8688.bin
# Activate the wifi client
wpa_supplicant -i mlan0 -c /root/wifi.conf -B
# Bring up the interface
ifconfig mlan0 up
# For a dynamic IP
dhclient mlan0
# For a static IP
#ifconfig mlan0 192.168.1.150 netmask 255.255.255.0 up
#route add -net 192.168.1.0 netmask 255.255.255.0 mlan0
#route add default gw 192.168.1.1 mlan0
# Set LEDs for client mode
echo 0 > `eval ls /sys/class/leds/*plug*\:green\:wmode/brightness`
echo 1 > `eval ls /sys/class/leds/*plug*\:red\:wmode/brightness`