Because the rotation is actually being managed by the labeling engine.
When you define the placement by data (moving the label), there is no data for the rotation so it is zero.
But you can define a expression for the rotation (Edit... option of the Data defined, Rotation submenu):
line_interpolate_angle(
$geometry,
line_locate_point(
$geometry,
make_point(
"auxiliary_storage_labeling_positionx",
"auxiliary_storage_labeling_positiony"
)
)
) + 90
What are we doing? Retrieving the angle of the geometry at the nearest point of the label placement. The angle retrieved is from North, so we are adding 90 degrees for the label rotation.
For labels not moved, the rotation will be managed by the engine as before.