C certainly can implement tail recursion. Tail recursion in C looks like this:
int foo (int bar)
{
int baz;
...
return foo(baz);
}
All C compilers can do that. Some (indeed most) of them provide optimization for it so it doesn't use additional stack space, like this (gcc, MSVC and clang/LLVM):
I don't know much about Pascal, but here is a reference to a non-LLVM based pascal compiler supporting tail recursion in 2004:
Given the LLVM case works with multiple languages and is probably the most common modern compiler back end, and given those are the most common C compilers, and given your source appears not to distinguish between tail recursion and tail recursion without using stack space, I'd suggest your source is either wrong or at best out of date.
Re the second part of your question:
I'm unable to understand why it is not possible to implement tail recursion if stack is used for procedure arguments, local variables and return addresses.
It is possible to implement tail recursion using the stack, just like any other recursion. However, if you don't optimize it so not to use the stack (per e.g. the links above), then deep recursion will cause you to run out of stack space. Arguably in a modern environment where memory is cheap and ones stack size is not constrained by a 32-bit memory map, this is less of a problem. However, given most compilers do optimize and can avoid the stack anyway, it works in other more challenging environments too.