Question seems to be about QoS not VPLS.
You are thinking correctly, always when your interfaces actual rate is less than physical rate, you need to configure shaper.
Without this sub-rate shaper, QoS configuration cannot work, as you cannot know when to start dropping packets, as the router will think you have 1GE available capacity and will not realize you're congested at 300Mbps.
So you'd configure parent shaper of 300Mbps and under this shaper you'd configure your QoS policy. This config should be in physical interface.
If you have multiple VLANs, you need another hierarchy level, that is you'll first give physical interface 300Mbps, then distribute this as burstable percentages to different vlans, then apply to each of these vlans their own QoS policy.
I would start simple and work up. I.e. 300Mbps shaper in physical and QoS policy in the physical only, treating all VLANs as equal. If you'll specify platform, I can give example of HQoS config.
IOS example could be:
class-map match-any EF
match precedence 5
match precedence 6
match precedence 7
class-map match-any AF
match precedence 1
match precedence 2
match precedence 3
match precedence 4
match packet length max 200
shape average 300000000
priority percent 20
bandwidth percent 50
bandwidth percent 30
service-policy output Parent
This is purely random example, you should decide how many classes you need (I recommend as few as possible, and only add classes when you absolutely you know you must, start with 2) and you should decide how to distribute the guaranteed share of them. 'bandwidth percent X' is burstable, 'priority percent X' usually is not (should be accompanied with policer).
Good staring point would be two classes, both burstable (bandwidth percent X), some high priority traffic class and rest (class-default). Then you'd only need to decide what traffic to put in high priority class, and what their guaranteed share of the 300Mbps would be.