DateTimeInterval is used to fix interval data in time and duration. In the current standard these are required. However, when doing interval data at fixed intervals, and when the IntervalLength is specified in ReadingType, these timestamps are not necessary because they can be deduced from the stream of intervals in the IntervalBlock.
Thus, when the attributes of start and duration are optional, the encoding only needs to contain as much time information as necessary to clearly fix the start and end of each IntervalReading. The reduction in the extraneous tags allows for about a 50% reduction in the size of the data file.
Naturally, when the attributes are necessary to the purpose of the DateTimeInterval, they must be present.