Private MIBs are usually vendor specific. They contain additional information for their specific equiment which cannot be provided through RFC-defined MIBs. This way the vendor can provide more information.
To answer your second question: sometimes vendors provide both: the RFC-defined MIB contains all that can be contained there (so most software using these MIBs can use it) and the private MIB contains the additional data (and sometimes the RFC-defined data as well).
Basically it's all up to the vendor to put in the MIB what he deems useful, but it's very useful to use the RFC-defined MIBs where possible so many tools can use it out of the box.
The ifCounterDiscontinuityTime is triggered when interfaces are dynamically removed from a device and then that same interface is dynamically re-added. I tested this using a loopback interface but I believe the behavior would be the same for modular interface whose existence would change based on whether or not the module was present. The steps to reproduce this are below and there is some further reading on this topic in the RFC here: https://www.rfc-editor.org/rfc/rfc2863#section-3.1.5
1. Create loopback 100 and find it's ifindex
router1#conf t
router1(config)#int loopback100
router1(config-if)#end
[user@host logs]$ snmpwalk -v 2c -c $COMMUNITY router1 .1.3.6.1.2.1.2.2.1.2 | grep Loopback
IF-MIB::ifDescr.67 = STRING: Loopback100
2. Check the current value of ifCounterDiscontinuityTime for Loopback100
[user@host logs]$ snmpwalk -v 2c -c $COMMUNITY router1 1.3.6.1.2.1.31.1.1.1.19.67
IF-MIB::ifCounterDiscontinuityTime.67 = Timeticks: (0) 0:00:00.00
3. Remove Loopback100 and check the value of ifCounterDiscontinuityTime
router1(config)#no int loopback 100
[user@host logs]$ snmpwalk -v 2c -c $COMMUNITY router1 1.3.6.1.2.1.31.1.1.1.19.67
IF-MIB::ifCounterDiscontinuityTime.67 = No Such Instance currently exists at this OID
4. Re-add Loopback100 and check the value of ifCounterDiscontinuityTime
router1(config)#int loopback 100
[user@host logs]$ snmpwalk -v 2c -c $COMMUNITY router1 1.3.6.1.2.1.31.1.1.1.19.67
IF-MIB::ifCounterDiscontinuityTime.67 = Timeticks: (111308186) 12 days, 21:11:21.86
Best Answer
SNMP 2u offers per-user authentication, similar to SNMPv3. SNMPv2u never really took off in the wild; anyone who wants per-user authentication uses SNMPv3. For more details (and there are a lot), consider this article in the Simple Times.
That said, I'm not even sure how many agents support SNMPv2u; however it isn't many if they do. NET-SNMP doesn't even have an option for
-v2u