Arithmetic operators should have operands of same type. If not, one or both will be converted before the operation is performed. This is not necessarily a problem but the issue can be helpful if you prefer to be strict about disallowing implicit conversions.
module fly;
logic [7:0] a;
struct packed { logic [7:0] x; } b;
initial a += b;
endmodule
module fly; logic [7:0] a; logic [7:0] b; initial a += b; endmodule