<i>Using main and not _start is required by the gcc linker, any other symbol name will not work!.</i><p>Not really; while main is default, -e flag allows you to specify an arbitrary symbol as entry point.
You can find more info on Linux (and System V) calling conventions, stack layout, etc. in this document: <a href="http://www.x86-64.org/documentation/abi.pdf" rel="nofollow">http://www.x86-64.org/documentation/abi.pdf</a>
Why would anyone do this? If you've accepted that you're going to pay the cost to link against libc, use C. If you need to do something that specifically requires assembly, write that function (and that function only) in assembly. GCC will handle all of this very cleanly for you. You don't have to write main() in assembly.
As well intentioned as I imagine the author to be, there's really nothing here that you couldn't learn from older documentation, as several commentors have pointed out. A more interesting example would have been to calculate running time of some function vs. it's recursive version. Essentially, something besides an extended 'hello world'.