I thought of a potential advantage of keeping the behavior as it currently is: it gives library authors a way of making record types opaque.
Consider a union type.
type Foo = FooA Float | FooB Int | FooC
If an author wants the type constructors as part of the public API, their module header looks like this:
module FooModule exposing (Foo(..))
But if they wants to hide the type constructors, they can change it to this:
module FooModule exposing (Foo)
A record type always exposes its definition & constructors:
module FooModule exposing (PublicFoo)
type alias PublicFoo = { a : Float }
But using the behavior that Peter asks about, an author can alias the record and hide its "record-ness" from library users:
module FooModule exposing (PublicFoo)
type alias PublicFoo = PrivateFoo
type alias PrivateFoo = { a : Float }