The container will look for Tag Files (.tag) under WEB-INF (or a subdirectory of it) (Jarred Tag Files is another story). It will then create a TLD for these files, so you don't need to make one. That's what they mean by "implicit tag library".
I think when we use "tagdir" in jsp to give the info of tag file location , container create itself tld file for given tag.
but when we use "uri" in jsp then container look for tld file created for the tag.
Packaging tag files directly in a web application , The JSP container must generate an implicit tag library for each directory
under and including /WEB-INF/tags/. This tag library can be imported only via the
tagdir attribute of the taglib directive.
But If you placed your tag files as a JAR under META-INF/tags directory then have to declared a explicit tag library OR TLD file to mention the location of that tag files.
<tag-file> element should be used in that case.
Please refer JSP specification 2.0 (JSP.8.4.3 Packaging Directly in a Web Application)