How unique are MongoDB _id fields?
Strictly speaking, _id fields are as unique as you make them.  As you have discovered, the default values for _id are ObjectIDs but you can populate the field with any data you wish.  

Therefore, for example, you could use a UUID as I have done in this sharding example and then the chances of a collision across collections would essentially be whatever the collision chance is of your generation method and content. A crude version of this _id override can also be seen in this gist (something I used for testing GUIDs some time ago)

In terms of ObjectIDs themselves, the topic has been covered pretty well already (here and here for example) and can be inferred from the documentation you linked.  Basically, there is a chance of collision, particularly for ObjectIDs generated by the same host within the same second at a high volume but for most use cases that is not a concern.

Finally, with respect to any database level guarantee of uniqueness across collections, there essentially isn't one.  Uniqueness is enforced by the index, and there is no option for an index to span multiple collections, hence uniqueness is only guaranteed within a given collection.