You only get the path once because you're only outputting it once. Your $list has multiple lines in it, but they're not joined to the path output (or the size, for that matter).
One approach could be to just use a for loop, similar to:
for i in *
do
filesize=$(du -h $i)
fileinfo=$(ls -l $i | awk '{printf $3,$6,$7,$8}')
printf "%s %s %s %s\n" $i $filepath $fileinfo $filesize
done
EDIT: Forgot to set $filepath, but you should get the idea...