Why is the region passed to the command in the first example and not in the second and third one?
The region is passed in all three cases; but if the command you pass it to does nothing with its standard input, then you will not get a useful result.
i.e. You are effectively doing this:
printf word | wc
printf word | echo
printf word | locate
Note that ...