Yes they do things a little differently - unintentionally though.

It's the way the code in the background creates the cursor for the analyze that's different (which have a number of bugs by the way).

Use dbms_stats.gather_schema_stats(). Even this one is not full proof as I am finding out now.

Just test out the different methods of gathering statistics to determine which is best for you because of the different methods that they use.