O problema não é o IFS, é porque no bash (e em alguns outros shells) o RHS de um pipeline é executado em um subshell.
Uma alternativa simples é usar a substituição de processo para manter o read
no shell pai:
read -r device blocks used available use_percent mounted_on < <(df -k | grep /dev/mmcblk0p1)