When a router receives a padded 64 byte Ethernet II(aka DIX) frame and it needs to send this over an dot1q sub-interface, then router will add a new Ethernet II header, IEEE 802.1q field and recalculate the FCS. The question is, should router put a 64 byte frame onto wire or 68 byte frame? For example router receives an ICMP "echo request" message which has 6+6+2 byte DIX header, 20 byte IPv4 header, 8 byte ICMP header, padding of zeros for 14 bytes and then the 4 byte FCS. Now if the router will forward this frame over 802.1q sub-interface, which means that 4-byte 802.1q field is added, then should the router preserve all the padding and send 68 byte frame to wire or should it cut off 4-bytes of padding and send the 64 byte frame? A reference to RFC would be great.
Routers work at layer-3. Your ICMP message would be extracted from it's layer-2 container (which is bigger than the l3 payload) and processed as such. The next-hop would be presented 28 bytes to be encoded for whatever layer-2 it might be. Thus, in theory, a 64byte padded frame would be transmit.
In a switch, yes, an 802.1q tag would be inserted into the otherwise as-is frame. (adding 4 bytes.)
While DIX can't tell the exact payload length when padding is used, a router is going to decapsulate the IP packet. When it is forwarded, the packet is encapsulated with a minimum payload requirement of 42 octets. So 64 octets should be send out at layer 2 on the dot1q interface.
Of course, it's entirely possible that one or two vendors don't vary the padding ... so I would include the same "in theory" caveat as Ricky.