Porque simplexml_load_file carga un archivo desde el sistema de archivos local, tu al pasarle una URL rompes con eso ya que una URL no es un sistema de archivos local, con sockets es bastante sencillo hacerlo, simplemente haces un GET a esa dirección lees la respuesta (el contenido XML) y lo pasas a simplexml_load_string.
Saludos