C++ with SDL is native and can run on almost any platform (cross-platform), more specifically those with limited system specifications.
C# with MonoGame is great for proto-typing a concept, but you could run into unavoidable bottle necks for large games. Additionally, SDL is just a graphics layer, where MonoGame is a complete API for interactive media. MonoGame could be cross-platform too, but I am unsure of its complete audience.
Is MonoGame really cross-platform?
You will do a little work from scratch when using C++ with SDL, but there are many libraries out there for C++ game development that will make it a breeze. If productivity is an issue, then you could have problems using C++, unless you use an existing framework for your game, which typically handles memory management. But that is the risk you take with C++; write more efficient code in a longer time frame.
Irrlicht is a great library for rendering. Simple and clean.
http://irrlicht.sourceforge.net/