При использовании QinQ к уже тэгированному фрейму добавляется еще один тэг. Наиболее часто используется в провайдинге. Например, от клиента 1 все фреймы дополнительно помечаются тэгом 100, от клиента 2 - 200. Таким образом можно отличить фреймы во влане, например, 10, от первого (они будут тегированы 10 , затем 100) и второго (тегированы 10, затем 200) клиентов.
Private vlan используется, когда надо повлиять на 'видимость' хостов внутри влана. Пару раз видел у хостеров - есть, к примеру, /25 сеть и соответствующий влан, надо каждому хосту (один хост - это один клиентский сервер) разрешить видеть только default gateway и возможно служебный сервер для загрузки ОС. В таком случае порты, к которым подключены маршрутизатор и служебный сервер, работают в режиме promiscuous (в терминах private vlan, опять же), каждый клиентский порт - в режиме isolated (как участник isolated vlan). Двойного тэгирования здесь, как я понял, не происходит.
Вкратце, думаю, можно сказать, что QinQ - это технология мультиплексирования, Private vlan - технология фильтрации на уровне портов (т.е. мы можем указать, каким портам обмениваться трафиком, а каким нет, несмотря на то, что все порты находятся в одном vlan).