I'm no XML expert, but I think that with
Code:
<package version="2.0" unique-identifier="ISBN" xmlns="http://www.idpf.org/2007/opf">
you have a single namespace (xmlns) and there's no ambiguity, while with
Code:
<package version="2.0" unique-identifier="ISBN" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
you're specifying 5 namespaces (dcterms, tei, xsi, dc, opf) and you should explicitly indicate which one applies to the element, i.e., <opf:package ...>.