It all depends on if you want the communication to be synchronous or not as ExternaInterface can return data as where navigatoToURL and fscommand are Asynchronous and can only call a javascript function, they cannot return values or a response.
From live docs in relation to External Interface
From ActionScript, you can do the following on the HTML page:
* Call any JavaScript function.
* Pass any number of arguments, with any names.
* Pass various data types (Boolean, Number, String, and so on).
* Receive a return value from the JavaScript function.
From JavaScript on the HTML page, you can:
* Call an ActionScript function.
* Pass arguments using standard function call notation.
* Return a value to the JavaScript function.
the flash.external.ExternalInterface Class is a direct replacement for flash.system.fscommand Class.
So using ExternalInterface is the preferred method or communication between flash and a Javascript function, though if the call is merely Asynchronous it is ok to use flash.net.navigateToURL
For the best tutorials check out Lee BrimeLow's gotoAndLearn.com and theflashblog.com.
My works are here pixeldev.net