You can clone with
HTTPS or Subversion.
Here is a gist with the reproduction: https://gist.github.com/3501893
If you change it so the content pane is attached to the window body instead of a dijit/Dialog, the column headers show up fine.
Something similar occurs for me as well. When I place the grid inside a dojo drop down button, the headers do not appear.
You're calling startup on the grid (and the popup) before it's actually in flow. Call the grid's startup method after calling popup.show and it will probably be fine.
One exception to this rule is that dgrid components will attempt to automatically call startup for you if they can determine that they are already in flow immediately upon creation.
(Edit) I might add that you may also get better results in your cases if you mix in the DijitRegistry dgrid extension; see the first sub-heading under https://github.com/SitePen/dgrid/wiki/Working-with-Widgets for more info.
Given this issue received no further response, I'm closing it, since I believe that the premature call to startup was the cause.