I'm coming from an SQL background, so I'll try to explain my thought process.
There's two issues here. Firstly, aggregate type identification.
A table "users" has a unique integer identifier (serial/autoincrement). A table "orders" also has a unique integer identifier (again, serial/autoincrement). They have the same integer identifier, by they are located in different tables because they have different data structures and invariants on those data structures, and there is therefore no collision.
When moving to event sourcing, all the data is placed in a central event log to replay each aggregate's history. If the application can't tell which type of object (a "user" or an "order") a set of events belongs to, then how can the events be applied to them? E.g., say I have a "user" aggregate with an ID (not UUID for brevity) of "ABC" a single event "user registered". If a client issues a "cancel order ABC" command, the command handler will ask the order repository to replay all events for aggregate "ABC". Only "ABC" is not an order, but a user.
The second issue is correlation between aggregates of different types. E.g., say that the cancellation of an order does three things: 1) the "order" aggregate is cancelled (duh); 2) an "sorry you didn't order, how can we improve this?" email survey is sent using a process manager; 3) a "lead" aggregate is created (also a process manager), allowing staff to follow up with the customer.
The cancellation of the order triggers the creation of two other aggregates (also process managers). If aggregate UUIDs must be unique even across aggregate type boundaries, we can randomly generate the UUID, but that does not provide a correlation between each aggregate's primary unique identifier (it's UUID). In this scenario, we'd have to load related aggregates - e.g., the "lead" from the cancelled "order" - by using the lead's "order UUID" property. Alternatively, we could generate a lead UUID deterministically. This correlation allows an easy one-way translation from the (originally random) order UUID to the (deterministically generated based off the order) lead UUID. A third scenario is to allow two aggregates to have the same UUID provided that they are not of the same type, hence allowing a more direct correlation.
There's a number of scenarios where the same ID is used to identify aggregates of different types. E.g., a customer might be identified as "SPR16-40789". This customer identifier has their registration sale period ("Spring 2016" or "SPR16") embedded in it. Their invoices might be identifies as "SPR16-40789-12", again with the customer number embedded in the invoice number. Such "correlated primary identifiers" can get very ugly (formatting issues, changing conventions used by the business, etc, etc), but their best quality is that you can look at one object and be quickly able to identify related objects. E.g., you can look at an invoice and know which customer it was for and the sale period in which the customer first registered.
Just because UUIDs have "universal" in the name, that doesn't mean that we have to treat them universally, like some kind of global variable.
I hope the above explains my reasoning. I look forward to your reply.