the difference is this:
/to provide/ has also the meaning of /to give/
/to offer/ is the first action that will eventually lead to /to give/ if the
things (real or abstract) offered are accepted.
In some case, as when the acceptation is implicit, /to offer/ also include the
meaning /to give/.
/to provide/ has the meaning of /to give/, but usually in the context of vital stuff (or very important stuff like tuition, books, etc.); sometimes it has the added (and implicit) meaning 'for free'.
Examples:
-- You refused the help I offered you, so I am sorry that you are in trouble,
but now I can't do anything for you.
-- I am glad you accepted my little help; where should I send the money ?