I think what you have learned is absolutely correct: these are words with similar meanings, and you should not be confused. There are lots of words (in all languages) with very similar meanings, and often the only way to understand which is most appropriate in a particular case is from experience of hearing them used. So it's quite hopeless trying to learn the subtle distinctions by looking at lists of English words in dictionaries.
But there is an obvious difference between these two words, which is exactly analogous to the difference between "keep" and "maintain". "Keep" is a Real English (Germanic; that's why the past is 'kept') word, whereas "maintain" is a loan from French/Latin. Similarly 保つ is a Real Japanese (Yamato) word, whereas 維持(する) is a loan from Chinese. So there is a difference of register (or flavour), but it's not a simplistic question of 'formal' vs 'informal'.
Also 維持 is really a noun, so it's easy to make Sino-Japanese compounds with it, such as 維持費, the "cost of maintenance". (You should find a lot of commonality with other Yamato/SJ pairs.)