A backing integer is inferred from the total bit size of the fields.
When you provide a backing integer–after packed struct–zig compiler enforces it and an error is displayed if the inferred bit size is different from the provided one.
I suggest using godbolt to answer such questions. In this godbolt example, you can see that your assumption is correct and the compiler just inserts 5 (101₂) into the struct directly, however the compiler is doing some extra work to preserve the padding bits of the struct. In this case a direct initialization is better.