The blog module sets the pagetitle by using the CDefault class directly, for that BlogModuleBase has this public read only property:
Public ReadOnly Property BasePage() As DotNetNuke.Framework.CDefault
Get
Return CType(Me.Page, DotNetNuke.Framework.CDefault)
End Get
End Property
This property is used to set a number of things, like page author, page copyright, and also the page title. I'm have no idea either why the title propery of the page base class isn't called instead, maybe because of the cast to CDefault. I still have to set up my DNN4 /asp 2.0 environment, so i cant debug it either. Perhaps a solution would be to add a dnn version check when setting the page title, and use for dnn 4.0.1 and up just me.page to set the page title. However, if the other meta tags are not available in the page base, then that would cause other problems. Are you sure there is no way to circumvent the compile warning, maybe use Shadows for the property?
As for modules setting the page attributes directly: you are right that that might cause problems with different modules on one page all trying to set a module title. I can show you an example of that here: http://www.apollo-software.nl/Blog/tabid/169/EntryID/4/language/nl-NL/Default.aspx
On this page, my own module that translates page titles sets the page title to the Dutch version, and the blog module appends that title with the blog title...
Setting a page title from a module can be important for the user experience, but more importantly for search engines indexing the page.....