OpenID Connect tries to solve the problem of sharing user authentication between two parties : the identity provider (OP) and a client.
This is not clearly stated in the OIDC docs, but based on my experience OIDC doesn't try to solve how you authenticate your own users accross different platforms (web, mobile/desktop).
That's one of the very few valid use cases for the OAuth 2.0 "Resource Owner Password Credentials grant", where the client exchanges the user credentials for a token.
Here you are inside your own system, your mobile/desktop application cannot be considered a third party, it only provides a trusted way for the user to send you its credentials.
You can make sure the app does not store them since you have control over the codebase.
EDIT : The mobile app instances can share (unless you manage to dynamically assign client IDs) a client ID/secret that cannot be kept confidential. It makes up a really thin client authentication layer, trying to make sure that the requests do come from your mobile/desktop application :
POST /oauth/token HTTP/1.1
Authorization: Basic ${BASE64_ENCODED_CLIENTID_CLIENTSECRET}
grant_type=password&
username=${USERNAME}&
password=${PASSWORD}
Some people dislike that it specifies how to authenticate a user, and some companies may have additional credentials than username+password, for example when using 2-factor authentication. Also, some people used the ROPC grant wrong, as it is only valid inside an organization, allowing a client to request your own user credentials is killing the point of having an SSO/authorization protocol.
OIDC is still OAuth 2.0, which means you are free to implement your own "user credentials" flow to obtain an access token + ID Token from your desktop/mobile app. It's outside the scope of OIDC though.
BTW, SAML was created at a time when mobile apps were not really in the picture :
SAML 2.0 was ratified as an OASIS Standard in March 2005