I was confused by this, and remain slightly so, but it's no longer a problem as the latter form above worked out OK - there was a problem elsewhere in the scripting that meant the events were erroring
The confusion remains because the former way (DatePickerFor) was indeed putting "type=text" in the attributes, not "type=date". By some accident of coding I had both these code forms on the page simultaneously, with one picker being called SomeDate and the other being called xxx. The code handling the events was hard wired to look for SomeDate control, and pull its value before making an ajax call. Interestingly when the second datepicker (the latter form) was edited, the event fired and read the Value from the first datepicker, which resulted in an error "The date is not in the format yyyy-mm-dd" - it's true, the format of the date in these pickers is mm/dd/yyyy.
I never resolved or found out whether this error was related to the picker's inability to show the initial value it was given, but the latter form works