I replaced the printf(...) with dprintf(1, ...) (since a dprintf earlier in the function was working fine).
This appears to have fixed the issue (though PCHS seems to be wrong, maybe because sector count is negative when parsed as a signed int). Full log attached.
|dfc02000| USB MSC vendor='WD' product='Elements 10B8' rev='1012' type=0 removable=0
\dfc04000/ End thread
|dfbfd000| USB MSC vendor='Multiple' product='Card Reader' rev='1.00' type=0 removable=1
|dfbfd000| Device reports MEDIUM NOT PRESENT
|dfbfd000| scsi_is_ready returned -1
|dfbfd000| Unable to configure USB MSC drive.
|dfbfd000| Unable to configure USB MSC device.
\dfbfd000/ End thread
|dfc02000| Waiting for device to detect medium... \dfc03000/ End thread
|dfc02000| USB MSC blksize=512 sectors=-388003840
|dfc02000| Registering bootable: USB MSC Drive WD Elements 10B8 1012 (type:2 prio:103 data:f6110)
\dfc02000/ End thread
\dfc08000/ End thread
All threads complete.
Scan for option roms
Press ESC for boot menu.