A very interesting found.
Though internally both should use same streaming channel, but Custom Notification
might be using some internal channel to communicate which does not get counted in org streaming limit.
But Events such as Generic Events, Platform Events, PushTopic Events
uses the same streaming mechanism but these gets counted in the limit.
The main difference between them are below.

I have debugged the Custom Notification from Chrome browser and found out that you can actually subscribe to this event from a LWC Component and use it for custom functionality too.
export default class HelloWorld extends LightningElement {
channelName = '/s/notifications/notification';
isSubscribeDisabled = false;
isUnsubscribeDisabled = !this.isSubscribeDisabled;
subscription = {};
handleChannelName(event) {
this.channelName = event.target.value;
}
connectedCallback() {
this.registerErrorListener();
}
// Handles subscribe button click
handleSubscribe() {
const messageCallback = function(response) {
console.log('New message received: ', JSON.stringify(response));
};
// Invoke subscribe method of empApi. Pass reference to messageCallback
subscribe(this.channelName, -1, messageCallback).then(response => {
console.log('Subscription request sent to: ', JSON.stringify(response.channel));
this.subscription = response;
this.toggleSubscribeButton(true);
});
}
// Handles unsubscribe button click
handleUnsubscribe() {
this.toggleSubscribeButton(false);
// Invoke unsubscribe method of empApi
unsubscribe(this.subscription, response => {
console.log('unsubscribe() response: ', JSON.stringify(response));
// Response is true for successful unsubscribe
});
}
toggleSubscribeButton(enableSubscribe) {
this.isSubscribeDisabled = enableSubscribe;
this.isUnsubscribeDisabled = !enableSubscribe;
}
registerErrorListener() {
// Invoke onError empApi method
onError(error => {
console.log('Received error from server: ', JSON.stringify(error));
// Error contains the server-side error
});
}
}
Messaging.CustomNotification customNotification = new Messaging.CustomNotification();
customNotification.setNotificationTypeId([SELECT Id FROM CustomNotificationType].Id);
customNotification.setTargetId([SELECT Id FROM Account LIMIT 1].Id);
customNotification.setTitle('here is my more data');
customNotification.setBody('Here is my data Here is my data ');
customNotification.send(new Set<String> {String.valueOf(UserInfo.getUserId())});
Check the event name : /s/notifications/notification
And on the UI you get a message like this.

You can use this mechanism to refresh components or page on demand. No need to subscribing to Platform or any streaming events.
ADVANTAGE -> Does not gets counted under concurrent subscriber. Does not gets counted in 50K message limit of streaming channel.