If I read ts source right, it merely prepends the current time to every line it echoes from stdin to stdout.
now is different. It re-prints current time once a second while waiting for the input. You basically get the running clock at the last line of output.