We were also facing the same problem.
The solution to this is to use correct version of the.tld file.
Compare the file
/WEB-INF/struts-html.tld
and the file present in struts.jar \META-INF\tlds\struts-html.tld
There must be some differences between these 2 files.
The reason it was working for 2nd code, is because when you put
http://struts.apache.org/tags-html then it takes the tld from the JAR file directly. and in previous case it takes from web-inf directory.