Виталий Инчин: в большинстве браузеров можно. https://jsfiddle.net/Stalk/6x098ro6/
Возможно с "всегда" я загнул, но примерно со времен ие6, а то и раньше.
Т.е. как можно - валидатор вероятно будет ругаться, но браузер от этих левых свойств не упадет, и к ним можно достучаться через js.
Виталий Инчин: Всегда. DOM-элементам можно добавлять свои свойства, методы и т.п. Как и к почти всем другим объектам в javascript. Разве что в XHTML были какие-то ограничения. Но ваш вариант лучше, имхо.
Роман Нестерук: Заметной разницы в производительности не будет. Но если вы навешиваете обработчик для конкретного элемента (у вас же там id, а он должен быть уникальным в пределах документа) то не вижу смысла вешать его на document. Будет только мешать при отладке.