The problem is that Markdown is not really a markup language, since it only defines the content and structure, but has no way to specify how it will be displayed. To go from content (Markdown) to rendered presentation (PDF) you need a proper markup languaje (HTML/Tex) to be able to specify its layout.
The reason it's hard to render straight from Markdown isn't because it's not a markup language like html - because Markdown is just syntactic sugar for a subset of html. Because of that, it's usually easier to just use the abundant html tooling to render it. The problem is that html needs CSS to render nicely - and any tool used to render CSS+HTML is almost by definition a browser engine.