You will find over the long run that this behavior is not consistent.
The problem is, that
tee at some point in time opens the file for writing. From that moment on, the file is truncated. That is independent of which program reads the file.
It just happens that
cat is very quick and that the reading of the file apparently has been finished before
tee opens the file. But if for example the system load is bigger,
cat may not have been finished, and the pipeline with
cat may also truncate.
So, do not write to the same file as you are reading your pipeline from. Instead use Gnu
-i inplace, or if that is not available on your system, use
cp file file.tmp &&
awk '...' file.tmp | tee file