Any $ORIGIN directive only applies from that point onwards. See for example Pro DNS and BIND - Chapter 8 - $ORIGIN Directive.
The first $ORIGIN directive makes it easy to refer to 2001:db8:302::/48, which is covered by the zone.
The second $ORIGIN directive makes it easy to refer to 2001:db8:302:0::/64, which is a reasonable-sized subnet (/64 being a standard sized subnet in IPv6).
This avoids a quad of zeroes, which with the otherwise unwieldy IPv6 reverse RR names can make it pretty hard to keep track of things. I for one didn't count whether your example had 19, 20 or 21
0 in it. Of course, one would hope I don't have to count 15, 16 or 17 either, but at least that's a little shorter.
Note that you shouldn't make your name server authoritative for the entire /48 reverse zone unless the entire /48 block is actually under your control and assigned to you.
Pro tip: Especially in the case of IPv6 subnets and reverse DNS records, keep in mind that you are allowed to use a non-fully-qualified name in the $ORIGIN directive. For example:
$ORIGIN 18.104.22.168.8.b.d.0.1.0.0.2.ip6.arpa. ;; Below this applies to 2001:db8:302::/48
@ SOA ...
; ... whatever else applies ...
$ORIGIN 0.0.0.0 ;; Below this applies to 2001:db8:302:0::/64
; ... whatever applies ...
Especially in this case, I strongly recommend leaving a comment next to the $ORIGIN directive to make the intent clear. Lack of terminating periods at the end of labels is a common source of DNS problems, so it's good to explicitly call out that you didn't intend to make a fully qualified name if so.
Also note that this trick only works for longer origins, so you can go from 2001:db8:302::/48 to 2001:db8:302:0::/64, but not from 2001:db8:302:0::/64 to 2001:db8:302:1::/64. (But you could go from 2001:db8:302::/60 to 2001:db8:302:1::/64, if you were so inclined.)