The difference is, one sets the ratios between how classes are dequeued, the other sets ratios between how much buffer memory the class can obtain (from a finite pool).
BTW, there's two general schools of thought how they should be set, relative to each other. One school of thought is bandwidth and buffer ratios should "mirror" each other, the other school of thought is bandwidth and buffer ratios should be the converse of each other.
The thinking behind the school of thought they should mirror each other is: if some traffic is more or less important to dequeue relative to other traffic; that importance also applies to avoiding dropping traffic due to insufficient buffers.
The thinking behind the school of thought they should be be the converse of each other: traffic with a high dequeuing priority is less likely to be queued, so it shouldn't need much buffer space, while traffic with low dequeuing priority is more likely to be queued and needs additional buffer space.
Which is the better approach? That depends on what you're trying to accomplish with your QoS policies, and your best approach might be something else.