Кто объяснит этот феномен?
учите матчасть: data-атрибуты сторятся НЕ в элементе.
Потому что атрибут data-{name} и функция data({name}) это разные вещи.
Если у элемента не указан element.data({name}, value), то jquery берет значение из атрибута.