This is convergent behavior, really. pub use is for creating a module facade where the internal structure is different; type is for creating a new name for a type, especially one that's quite lengthy (usually because of type parameters).
If what you're doing is literally re-exporting another type under a new name, I think pub use as is more appropriate. But if you're "constructing" a type by specifying type parameters, which pub use as does not support, you're really not 're-exporting,' and that's why type is more appropriate.
There's a particularly annoying limitation related to generic enums that I thought I'd mention as I've run into it a few times:
If you have pub enum Foo<T> { Bar(T), Baz }, and you wish to re-export (or alias) this enum with the type parameter filled, there is no way to do so that will also allow downstream users to access the aliased enum's variants.
pub type Qux = Foo<i32>; will provide you with a type Qux that you can use solely as a type, however you cannot use it to access the enum's variants (Qux::Baz will fail to compile).
On the other hand, pub use path::to::Foo as Qux; does let you access variants via Qux, but of course does not provide a way to fill in the type parameter.
You can find some discussion around the issue here.
Something to do with enum variant resolution occurring at a different stage to type item resolution. I believe that it is now considered a bug, and that eventually this "limitation" of type aliases will be lifted. The issue I linked to goes through this in more detail.