Well, I think docs are not exactly specific. I also ran into both situations. I think the optional means that the object might have such attributes when fetching a dashboard definition.
However, I'd really appreciate the possibility of specifying the ID and owner. This would make synchronization of dashboards (and probably other items with ids - for example, request attributes) much more simple.