As per my understanding `ReservedXcmpWeight` seems to be more of a cap in how much weight one block will be able to be filled by XCMP message execution than anything else.
Meaning that if no messages need to be served/executed for block X, then all that available block space is there to be filled by other executions.

Notice that there is a similar set up for DMP messages.

I would recommend reading [`service_xcmp_queue`](https://github.com/paritytech/cumulus/blob/fb3837dcc9732ab8912eff51da9c86001d16206b/pallets/xcmp-queue/src/lib.rs#L796) documentation for some more insight on, and I quote:
> Service the incoming XCMP message queue attempting to execute up to `max_weight` execution weight of messages