As Jay says, there is no worry about race conditions with store-generated Ids. Breeze uses temporary keys which are resolved to permanent keys on the database tier. No worries there.
But I generally prefer Guids as well for quite different reasons, influenced by the issues that confront me as a client-side developer with less interest/concern in server-side efficiency.
The best reason for Guids in distributed apps (like Breeze apps) is that offline scenarios are much easier to support. Temporary keys (which Breeze handles quite well) do not survive well when entities are exported and imported ... as they are when storing unsaved new entities in client-side storage (e.g., browser storage). This pattern is useful even if you don't go offline; I often stash unsaved work locally as the user moves through the workflow ... just in case s/he closes the browser accidentally.
To be honest, Guids really aren't much of a problem for you server-side folks. You can beat the fragmentation issue with time-influenced Guids (e.g, GuidComb). Storage and indexing performance issues are diminishing with faster h/w and better DBs. And about the only person who needs to see a surrogate key is a developer; we are paid to suffer.
I write a lot of demos and there is no doubt that using integer identity keys makes that job easier for author and reader. I don't think demos offer sound guidance.
In practice, I use a mix of key data types even if they are NOT identity. My static reference entities (lookups: status, US States, etc) and rarely-changed entities (Products in the product catalog) are typically integer keys. They are easier to read and set (and incidentally store more easily). Entities that a client often creates (e.g., Order) use Guids.
There is no one answer. Your mileage will vary. Insert cliche here.