When you use ./, you look in the current working directory, which may change. dirname(__FILE__), on the other hand, will not change.
If you, for example, change the working directory (using chdir('/')or similar) before require, your first example will be successful, while your second will not be executed.
Excerpt from another answer :
However, it is more efficient to explicitly use include./file than PHP, which always checks the current directory for each include.
, , , ./ .